From 27e88e0bd98a1b04f8ea51953f16e1b681e93303 Mon Sep 17 00:00:00 2001 From: mkzero Date: Sun, 31 Oct 2010 19:32:54 +0100 Subject: [PATCH 01/61] Initial commit --- .project | 17 + .settings/.jsdtscope | 6 + .settings/org.eclipse.core.resources.prefs | 3 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + html/background.html | 192 ++++ html/menu.html | 144 +++ images/cross.png | Bin 0 -> 655 bytes images/grid.png | Bin 0 -> 195 bytes images/icon128.png | Bin 0 -> 22797 bytes images/icon16.png | Bin 0 -> 3608 bytes images/icon48.png | Bin 0 -> 7831 bytes images/key.png | Bin 0 -> 455 bytes images/popup_cancel_button.png | Bin 0 -> 4710 bytes images/popup_cancel_button_pressed.png | Bin 0 -> 4680 bytes images/popup_menu_background.png | Bin 0 -> 3170 bytes images/popup_save_button.png | Bin 0 -> 4881 bytes images/popup_save_button_pressed.png | Bin 0 -> 4854 bytes images/tick.png | Bin 0 -> 537 bytes js/D3.js | 892 ++++++++++++++++++ js/contentWorker.js | 121 +++ js/menu.js | 189 ++++ js/mootools.js | 436 +++++++++ manifest.json | 19 + styles/content.css | 29 + styles/menu.css | 146 +++ 26 files changed, 2196 insertions(+) create mode 100644 .project create mode 100644 .settings/.jsdtscope create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 html/background.html create mode 100644 html/menu.html create mode 100644 images/cross.png create mode 100644 images/grid.png create mode 100644 images/icon128.png create mode 100644 images/icon16.png create mode 100644 images/icon48.png create mode 100644 images/key.png create mode 100644 images/popup_cancel_button.png create mode 100644 images/popup_cancel_button_pressed.png create mode 100644 images/popup_menu_background.png create mode 100644 images/popup_save_button.png create mode 100644 images/popup_save_button_pressed.png create mode 100644 images/tick.png create mode 100644 js/D3.js create mode 100644 js/contentWorker.js create mode 100644 js/menu.js create mode 100644 js/mootools.js create mode 100644 manifest.json create mode 100644 styles/content.css create mode 100644 styles/menu.css diff --git a/.project b/.project new file mode 100644 index 0000000..6d459c9 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + d3coder + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..967f99d --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,6 @@ + + + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..56dbd08 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Sat Oct 23 15:44:09 CEST 2010 +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/html/background.html b/html/background.html new file mode 100644 index 0000000..e29eb43 --- /dev/null +++ b/html/background.html @@ -0,0 +1,192 @@ + + + + \ No newline at end of file diff --git a/html/menu.html b/html/menu.html new file mode 100644 index 0000000..0e1a20f --- /dev/null +++ b/html/menu.html @@ -0,0 +1,144 @@ + + + +
+
+
+
+

Message Type:

+ +
+
+ + Using alert() +
+
+ + Using native notifications +
+
+ + Log to console +
+
+ + Adding an HTML element to the bottom of the site +
+
+
+ + + + + + +
+ +
+ + + + + + \ No newline at end of file diff --git a/images/cross.png b/images/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a GIT binary patch literal 655 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 literal 0 HcmV?d00001 diff --git a/images/icon16.png b/images/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..c27ce87ba0c0f8c29c1172acdac76f7c11d4e7bb GIT binary patch literal 3608 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 literal 0 HcmV?d00001 diff --git a/images/key.png b/images/key.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d5e4f8cc75240f6e6bbb9e73466a9e3effb610 GIT binary patch literal 455 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 KMNUMnLSTZ5+vY?7 literal 0 HcmV?d00001 diff --git a/images/popup_menu_background.png b/images/popup_menu_background.png new file mode 100644 index 0000000000000000000000000000000000000000..4b07bd143401e6d16c2fdefe047a921ef744b9e3 GIT binary patch literal 3170 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 literal 0 HcmV?d00001 diff --git a/images/popup_save_button.png b/images/popup_save_button.png new file mode 100644 index 0000000000000000000000000000000000000000..21c032a6d168cb20832502b2784176d58df4be96 GIT binary patch literal 4881 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 D6BkOJ literal 0 HcmV?d00001 diff --git a/images/popup_save_button_pressed.png b/images/popup_save_button_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..34c094f99c4ff5729015ace36d84f700750441b0 GIT binary patch literal 4854 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 literal 0 HcmV?d00001 diff --git a/images/tick.png b/images/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..a9925a06ab02db30c1e7ead9c701c15bc63145cb GIT binary patch literal 537 zcmV+!0_OdRP)Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p + * @copyright (c) 2010 Maik Kulbe + */ + +/** + * KEY FUNCTION NAMESPACE + */ + +var D3 = +{ + //needs a new Icon - best would be an icon per decoding type + //icon: "popupIcon.png", + icon: "../images/icon128.png", + /** + * Version number + * + * @var String + */ + version: "0.3", + /** + * list all functions so we can use this while saving + * @var Array + */ + checkboxes: Array("functions_rot13", + "functions_timestamp", + "functions_crc32", + "functions_bin2hex", + "functions_html_entity_decode", + "functions_htmlentities", + "functions_htmlspecialchars", + "functions_htmlspecialchars_decode", + "functions_md5", + "functions_sha1", + "functions_quoted_printable_decode", + "functions_quoted_printable_encode", + "functions_escapeshellarg", + "functions_base64_encode", + "functions_base64_decode"), + + checkInstall: function() { + if(!localStorage.getItem('D3installed'+this.version) || localStorage.getItem('D3installed'+this.version) != 'true') { + localStorage.setItem("message_type", "notifications"); + localStorage.setItem("message_type1", "0"); + localStorage.setItem("message_type2", "1"); + localStorage.setItem("message_type3", "0"); + localStorage.setItem("message_type4", "0"); + + this.checkboxes.each(function(el){ + localStorage.setItem(el, "1"); + }); + localStorage.setItem('D3installed'+this.version, 'true'); + if(localStorage.getItem('D3lastversion')) { + localStorage.removeItem('D3installed'+localStorage.getItem('lastversion')); + } + localStorage.setItem('D3lastversion',this.version); + + } + }, + + createPopup: function(title, text) + { + var type = localStorage.getItem("message_type"); + switch (type) { + case 'console': + + text = D3.base64_encode(text); + + chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); + + chrome.tabs.executeScript(null, {code:"console.log('d3coder:: FUNCTION: " + title + "');"}); + chrome.tabs.executeScript(null, {code:"console.log('d3coder:: VALUE:');"}); + logIt = function(){ + chrome.tabs.executeScript(null, {code:"D3content.logConsole('" + text + "');"}); + }; + setTimeout("logIt()",400); + + break; + case 'alert': + alert(title + '\n\n' + text); + break; + case 'div': + chrome.tabs.insertCSS(null, {file: "styles/content.css"}); + chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); + injectDiv = function() { + text = D3.base64_encode(text); + chrome.tabs.executeScript(null, {code:"D3content.createDiv('" + title + "', '" + text + "');"}); + }; + setTimeout("injectDiv()",400); + break; + default: + case 'notification': + var popup = window.webkitNotifications.createNotification( D3.icon, title, text); + popup.show(); + break; + } + }, + + rot13decode: function(text) + { + var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var textrot = new String(); + + for(var i = 0; i < text.length; i++) + { + var codechar = text.substring(i, i + 1); + var pos = keycode.indexOf(codechar.toUpperCase()); + + if(pos >= 0) + { + pos = (pos + keycode.length / 2) % keycode.length; + codechar = (codechar == codechar.toUpperCase()) ? keycode.substring(pos, pos + 1) : keycode.substring(pos, pos + 1).toLowerCase(); + } + textrot = textrot + codechar; + } + + return textrot; + }, + + timestampToDate: function(text) + { + var timestamp = parseInt(text); + + if(!timestamp) return; + + var dateObject = new Date(); + dateObject.setTime (timestamp * 1000); + return dateObject; + }, + crc32: function( str ) { + str = this.utf8_encode(str); + var table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + + var crc = 0; + var x = 0; + var y = 0; + + crc = crc ^ (-1); + for (var i = 0, iTop = str.length; i < iTop; i++) { + y = ( crc ^ str.charCodeAt( i ) ) & 0xFF; + x = "0x" + table.substr( y * 9, 8 ); + crc = ( crc >>> 8 ) ^ x; + } + + return crc ^ (-1); + }, + bin2hex: function (s){ + var i, f = 0, a = []; + + s += ''; + f = s.length; + + for (i = 0; i/g, '>'); + + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE' : 1, + 'ENT_HTML_QUOTE_DOUBLE' : 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE' : 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i=0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } + else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/'/g, '''); + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + + return string; + }, + htmlspecialchars_decode: function (string, quote_style) { + var optTemp = 0, i = 0, noquotes= false; + if (typeof quote_style === 'undefined') { + quote_style = 2; + } + string = string.toString().replace(/</g, '<').replace(/>/g, '>'); + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE' : 1, + 'ENT_HTML_QUOTE_DOUBLE' : 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE' : 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i=0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } + else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should + // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + + return string; + }, + md5: function (str) { + var xl; + + var rotateLeft = function (lValue, iShiftBits) { + return (lValue<>>(32-iShiftBits)); + }; + + var addUnsigned = function (lX,lY) { + var lX4,lY4,lX8,lY8,lResult; + lX8 = (lX & 0x80000000); + lY8 = (lY & 0x80000000); + lX4 = (lX & 0x40000000); + lY4 = (lY & 0x40000000); + lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); + if (lX4 & lY4) { + return (lResult ^ 0x80000000 ^ lX8 ^ lY8); + } + if (lX4 | lY4) { + if (lResult & 0x40000000) { + return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); + } else { + return (lResult ^ 0x40000000 ^ lX8 ^ lY8); + } + } else { + return (lResult ^ lX8 ^ lY8); + } + }; + + var _F = function (x,y,z) { return (x & y) | ((~x) & z); }; + var _G = function (x,y,z) { return (x & z) | (y & (~z)); }; + var _H = function (x,y,z) { return (x ^ y ^ z); }; + var _I = function (x,y,z) { return (y ^ (x | (~z))); }; + + var _FF = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _GG = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _HH = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _II = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var convertToWordArray = function (str) { + var lWordCount; + var lMessageLength = str.length; + var lNumberOfWords_temp1=lMessageLength + 8; + var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; + var lNumberOfWords = (lNumberOfWords_temp2+1)*16; + var lWordArray=new Array(lNumberOfWords-1); + var lBytePosition = 0; + var lByteCount = 0; + while ( lByteCount < lMessageLength ) { + lWordCount = (lByteCount-(lByteCount % 4))/4; + lBytePosition = (lByteCount % 4)*8; + lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<>>29; + return lWordArray; + }; + + var wordToHex = function (lValue) { + var wordToHexValue="",wordToHexValue_temp="",lByte,lCount; + for (lCount = 0;lCount<=3;lCount++) { + lByte = (lValue>>>(lCount*8)) & 255; + wordToHexValue_temp = "0" + lByte.toString(16); + wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2); + } + return wordToHexValue; + }; + + var x=[], + k,AA,BB,CC,DD,a,b,c,d, + S11=7, S12=12, S13=17, S14=22, + S21=5, S22=9 , S23=14, S24=20, + S31=4, S32=11, S33=16, S34=23, + S41=6, S42=10, S43=15, S44=21; + + str = this.utf8_encode(str); + x = convertToWordArray(str); + a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; + + xl = x.length; + for (k=0;k>>(32-s)); + return t4; + }; + + var cvt_hex = function (val) { + var str=""; + var i; + var v; + + for (i=7; i>=0; i--) { + v = (val>>>(i*4))&0x0f; + str += v.toString(16); + } + return str; + }; + + var blockstart; + var i, j; + var W = new Array(80); + var H0 = 0x67452301; + var H1 = 0xEFCDAB89; + var H2 = 0x98BADCFE; + var H3 = 0x10325476; + var H4 = 0xC3D2E1F0; + var A, B, C, D, E; + var temp; + + str = this.utf8_encode(str); + var str_len = str.length; + + var word_array = []; + for (i=0; i>>29 ); + word_array.push( (str_len<<3)&0x0ffffffff ); + + for ( blockstart=0; blockstart-~ ]/gm, + RFC2045Encode1OUT = function (sMatch) { + // Encode space before CRLF sequence to prevent spaces from being stripped + // Keep hard line breaks intact; CRLF sequences + if (sMatch.length > 1) { + return sMatch.replace(' ', '=20'); + } + // Encode matching character + var chr = sMatch.charCodeAt(0); + return '=' + hexChars[((chr >>> 4) & 15)] + hexChars[(chr & 15)]; + }, + RFC2045Encode2IN = /.{1,72}(?!\r\n)[^=]{0,3}/g, + RFC2045Encode2OUT = function (sMatch) { + if (sMatch.substr(sMatch.length - 2) === '\r\n') { + return sMatch; + } + return sMatch + '=\r\n'; + }; + str = str.replace(RFC2045Encode1IN, RFC2045Encode1OUT).replace(RFC2045Encode2IN, RFC2045Encode2OUT); + return str.substr(0, str.length - 3); + }, + escapeshellarg: function (arg) { + var ret = ''; + + ret = arg.replace(/[^\\]'/g, function(m, i, s) { + return m.slice(0, 1)+'\\\''; + }); + + return "'"+ret+"'"; + }, + base64_encode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = []; + + if (!data) { + return data; + } + + data = this.utf8_encode(data+''); + + do { // pack three octets into four hexets + o1 = data.charCodeAt(i++); + o2 = data.charCodeAt(i++); + o3 = data.charCodeAt(i++); + + bits = o1<<16 | o2<<8 | o3; + + h1 = bits>>18 & 0x3f; + h2 = bits>>12 & 0x3f; + h3 = bits>>6 & 0x3f; + h4 = bits & 0x3f; + + // use hexets to index into b64, and append result to encoded string + tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); + } while (i < data.length); + + enc = tmp_arr.join(''); + + switch (data.length % 3) { + case 1: + enc = enc.slice(0, -2) + '=='; + break; + case 2: + enc = enc.slice(0, -1) + '='; + break; + } + + return enc; + }, + base64_decode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; + + if (!data) { + return data; + } + + data += ''; + + do { // unpack four hexets into three octets using index points in b64 + h1 = b64.indexOf(data.charAt(i++)); + h2 = b64.indexOf(data.charAt(i++)); + h3 = b64.indexOf(data.charAt(i++)); + h4 = b64.indexOf(data.charAt(i++)); + + bits = h1<<18 | h2<<12 | h3<<6 | h4; + + o1 = bits>>16 & 0xff; + o2 = bits>>8 & 0xff; + o3 = bits & 0xff; + + if (h3 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1); + } else if (h4 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1, o2); + } else { + tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); + } + } while (i < data.length); + + dec = tmp_arr.join(''); + dec = this.utf8_decode(dec); + + return dec; + }, + get_html_translation_table: function (table, quote_style) { + + var entities = {}, hash_map = {}, decimal = 0, symbol = ''; + var constMappingTable = {}, constMappingQuoteStyle = {}; + var useTable = {}, useQuoteStyle = {}; + + // Translate arguments + constMappingTable[0] = 'HTML_SPECIALCHARS'; + constMappingTable[1] = 'HTML_ENTITIES'; + constMappingQuoteStyle[0] = 'ENT_NOQUOTES'; + constMappingQuoteStyle[2] = 'ENT_COMPAT'; + constMappingQuoteStyle[3] = 'ENT_QUOTES'; + + useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS'; + useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT'; + + if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') { + throw new Error("Table: "+useTable+' not supported'); + // return false; + } + + entities['38'] = '&'; + if (useTable === 'HTML_ENTITIES') { + entities['160'] = ' '; + entities['161'] = '¡'; + entities['162'] = '¢'; + entities['163'] = '£'; + entities['164'] = '¤'; + entities['165'] = '¥'; + entities['166'] = '¦'; + entities['167'] = '§'; + entities['168'] = '¨'; + entities['169'] = '©'; + entities['170'] = 'ª'; + entities['171'] = '«'; + entities['172'] = '¬'; + entities['173'] = '­'; + entities['174'] = '®'; + entities['175'] = '¯'; + entities['176'] = '°'; + entities['177'] = '±'; + entities['178'] = '²'; + entities['179'] = '³'; + entities['180'] = '´'; + entities['181'] = 'µ'; + entities['182'] = '¶'; + entities['183'] = '·'; + entities['184'] = '¸'; + entities['185'] = '¹'; + entities['186'] = 'º'; + entities['187'] = '»'; + entities['188'] = '¼'; + entities['189'] = '½'; + entities['190'] = '¾'; + entities['191'] = '¿'; + entities['192'] = 'À'; + entities['193'] = 'Á'; + entities['194'] = 'Â'; + entities['195'] = 'Ã'; + entities['196'] = 'Ä'; + entities['197'] = 'Å'; + entities['198'] = 'Æ'; + entities['199'] = 'Ç'; + entities['200'] = 'È'; + entities['201'] = 'É'; + entities['202'] = 'Ê'; + entities['203'] = 'Ë'; + entities['204'] = 'Ì'; + entities['205'] = 'Í'; + entities['206'] = 'Î'; + entities['207'] = 'Ï'; + entities['208'] = 'Ð'; + entities['209'] = 'Ñ'; + entities['210'] = 'Ò'; + entities['211'] = 'Ó'; + entities['212'] = 'Ô'; + entities['213'] = 'Õ'; + entities['214'] = 'Ö'; + entities['215'] = '×'; + entities['216'] = 'Ø'; + entities['217'] = 'Ù'; + entities['218'] = 'Ú'; + entities['219'] = 'Û'; + entities['220'] = 'Ü'; + entities['221'] = 'Ý'; + entities['222'] = 'Þ'; + entities['223'] = 'ß'; + entities['224'] = 'à'; + entities['225'] = 'á'; + entities['226'] = 'â'; + entities['227'] = 'ã'; + entities['228'] = 'ä'; + entities['229'] = 'å'; + entities['230'] = 'æ'; + entities['231'] = 'ç'; + entities['232'] = 'è'; + entities['233'] = 'é'; + entities['234'] = 'ê'; + entities['235'] = 'ë'; + entities['236'] = 'ì'; + entities['237'] = 'í'; + entities['238'] = 'î'; + entities['239'] = 'ï'; + entities['240'] = 'ð'; + entities['241'] = 'ñ'; + entities['242'] = 'ò'; + entities['243'] = 'ó'; + entities['244'] = 'ô'; + entities['245'] = 'õ'; + entities['246'] = 'ö'; + entities['247'] = '÷'; + entities['248'] = 'ø'; + entities['249'] = 'ù'; + entities['250'] = 'ú'; + entities['251'] = 'û'; + entities['252'] = 'ü'; + entities['253'] = 'ý'; + entities['254'] = 'þ'; + entities['255'] = 'ÿ'; + } + + if (useQuoteStyle !== 'ENT_NOQUOTES') { + entities['34'] = '"'; + } + if (useQuoteStyle === 'ENT_QUOTES') { + entities['39'] = '''; + } + entities['60'] = '<'; + entities['62'] = '>'; + + + // ascii decimals to real symbols + for (decimal in entities) { + symbol = String.fromCharCode(decimal); + hash_map[symbol] = entities[decimal]; + } + + return hash_map; + }, + utf8_encode: function ( argString ) { + var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n"); + + var utftext = ""; + var start, end; + var stringl = 0; + + start = end = 0; + stringl = string.length; + for (var n = 0; n < stringl; n++) { + var c1 = string.charCodeAt(n); + var enc = null; + + if (c1 < 128) { + end++; + } else if (c1 > 127 && c1 < 2048) { + enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128); + } else { + enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128); + } + if (enc !== null) { + if (end > start) { + utftext += string.substring(start, end); + } + utftext += enc; + start = end = n+1; + } + } + + if (end > start) { + utftext += string.substring(start, string.length); + } + + return utftext; + }, + utf8_decode: function ( str_data ) { + var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; + + str_data += ''; + + while ( i < str_data.length ) { + c1 = str_data.charCodeAt(i); + if (c1 < 128) { + tmp_arr[ac++] = String.fromCharCode(c1); + i++; + } else if ((c1 > 191) && (c1 < 224)) { + c2 = str_data.charCodeAt(i+1); + tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = str_data.charCodeAt(i+1); + c3 = str_data.charCodeAt(i+2); + tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return tmp_arr.join(''); + } +}; \ No newline at end of file diff --git a/js/contentWorker.js b/js/contentWorker.js new file mode 100644 index 0000000..40a0b68 --- /dev/null +++ b/js/contentWorker.js @@ -0,0 +1,121 @@ +/** + * @version 0.3 + * @author Maik Kulbe + * @copyright (c) 2010 Maik Kulbe + */ + +D3content = { + + createDiv: function(title, text) + { + text = D3content.base64_decode(text); + var hr = new Element('hr'); + + if(!$('D3-inject')) { + var infoDiv = new Element('div').set({ + //Any other property uses Element:setProperty. + 'id': 'D3-inject' + }); + var heading = new Element('h1').set({ + 'id': 'D3-inject-heading', + 'text': 'd3coder Output:' + }); + $(document.body).grab(infoDiv); + $('D3-inject').grab(heading); + $('D3-inject').grab(hr); + + var closeElem = new Element('a').set({ + 'id': 'D3-inject-close', + 'text': 'CLOSE [X]' + }); + + $(document.body).grab(closeElem); + + $('D3-inject-close').addEvent('click', function(){ + $('D3-inject').destroy(); + $('D3-inject-close').destroy(); + }); + } else { + var infoDiv = $('D3-inject'); + } + var infoHeading = new Element('h3').set({ + 'class': 'D3-inject-heading', + 'text': title + }); + + var infoText = new Element('p').set({ + 'class': 'D3-inject-text', + 'text': text + }); + + var hr = new Element('hr'); + + $(infoDiv).grab(infoHeading); + $(infoDiv).grab(infoText); + $(infoDiv).grab(hr); + }, + logConsole: function(text) + { + console.log(D3content.base64_decode(text)); + }, + base64_decode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; + + if (!data) { + return data; + } + + data += ''; + + do { // unpack four hexets into three octets using index points in b64 + h1 = b64.indexOf(data.charAt(i++)); + h2 = b64.indexOf(data.charAt(i++)); + h3 = b64.indexOf(data.charAt(i++)); + h4 = b64.indexOf(data.charAt(i++)); + + bits = h1<<18 | h2<<12 | h3<<6 | h4; + + o1 = bits>>16 & 0xff; + o2 = bits>>8 & 0xff; + o3 = bits & 0xff; + + if (h3 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1); + } else if (h4 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1, o2); + } else { + tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); + } + } while (i < data.length); + + dec = tmp_arr.join(''); + dec = this.utf8_decode(dec); + + return dec; + }, + utf8_decode: function ( str_data ) { + var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; + + str_data += ''; + + while ( i < str_data.length ) { + c1 = str_data.charCodeAt(i); + if (c1 < 128) { + tmp_arr[ac++] = String.fromCharCode(c1); + i++; + } else if ((c1 > 191) && (c1 < 224)) { + c2 = str_data.charCodeAt(i+1); + tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = str_data.charCodeAt(i+1); + c3 = str_data.charCodeAt(i+2); + tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return tmp_arr.join(''); + } +}; \ No newline at end of file diff --git a/js/menu.js b/js/menu.js new file mode 100644 index 0000000..12b7316 --- /dev/null +++ b/js/menu.js @@ -0,0 +1,189 @@ +/** + * @version 0.3 + * @author Maik Kulbe + * @copyright (c) 2010 Maik Kulbe + */ + +var D3menu = +{ + /** + * Version number + * + * @var String + */ + version: "0.3", + /** + * list all message types so we can use this while saving + * @var Array + */ + options: Array("message_type1", "message_type2", "message_type3", "message_type4"), + /** + * list all functions so we can use this while saving + * @var Array + */ + checkboxes: Array("functions_rot13", + "functions_timestamp", + "functions_crc32", + "functions_bin2hex", + "functions_html_entity_decode", + "functions_htmlentities", + "functions_htmlspecialchars", + "functions_htmlspecialchars_decode", + "functions_md5", + "functions_sha1", + "functions_quoted_printable_decode", + "functions_quoted_printable_encode", + "functions_escapeshellarg", + "functions_base64_encode", + "functions_base64_decode"), + + /** + * initialization to collect startup errors + */ + init: function() { + try { + D3menu.checkInstall(); + D3menu.restore_options(); + } catch(e) { + alert("An error accured:" + e + "\n\n Feel free to report errors to "+ + "info@linux-web-development.de so I can fix them."); + } + }, + + checkInstall: function() { + if(!localStorage.getItem('D3installed'+this.version) || localStorage.getItem('D3installed'+this.version) != 'true') { + localStorage.setItem("message_type", "notifications"); + localStorage.setItem("message_type1", "0"); + localStorage.setItem("message_type2", "1"); + localStorage.setItem("message_type3", "0"); + localStorage.setItem("message_type4", "0"); + + D3menu.checkboxes.each(function(el){ + localStorage.setItem(el, "1"); + }); + localStorage.setItem('D3installed'+this.version, 'true'); + if(localStorage.getItem('D3lastversion')) { + localStorage.removeItem('D3installed'+localStorage.getItem('lastversion')); + } + localStorage.setItem('D3lastversion',this.version); + + } + }, + + /** + * Save options to localStorage + */ + save_options: function(alertText) { + if(alertText == undefined) { + alert = true; + } + var value = false; + D3menu.options.each(function(option){ + if($( option ) && $( option ).checked == true) { + value = $( option ).value; + } + }); + localStorage.setItem("message_type", value ? value : "notifications"); + + D3menu.checkboxes.each(function(option){ + var elem = $( option ); + var value = "0"; + if(elem.checked) + value = elem.checked ? "1" : "0"; + else if(elem.value) + value = elem.value=="on" ? "1" : "0"; + + localStorage.setItem(option, value); + }); + alertText ? alert("d3coder:\n\nSettings changed successfully\n\nBe aware: If you enabled and/or disabled functions, you need to reload the extension under the extensions tab(chome://extensions)!\nAt the moment there is no other way to work around this, sorry.") : null; + }, + + /** + * Restore options from localStorage + */ + restore_options: function() { + var type = localStorage.getItem("message_type") ? + localStorage.getItem("message_type") : + "notifications"; + var somethingChecked = false; + + D3menu.options.each(function(option){ + var optionValue = $(option).value; + if(optionValue==type) { + $(option).checked = true; + somethingChecked = true; + } + }); + if(somethingChecked == false) { + $('message_type2').checked = true; + } + + D3menu.checkboxes.each(function(option){ + var value = localStorage.getItem(option) == 1 ? true : false; + var elem = $(option).checked = value; + }); + }, + + /** + * menu tab functions + * TODO: better code to switch between tabs than this massive block of JS + */ + messageTabShow: function(){ + $('message').style.display = ''; + $('message-tab').className = 'active'; + + $('context-menu').style.display = 'none'; + $('context-menu-tab').className = ''; + + $('misc').style.display = 'none'; + $('misc-tab').className = ''; + + $('credits').style.display = 'none'; + $('credits-tab').className = ''; + }, + contextMenuTabShow: function(){ + $('message').style.display = 'none'; + $('message-tab').className = ''; + + $('context-menu').style.display = ''; + $('context-menu-tab').className = 'active'; + + $('misc').style.display = 'none'; + $('misc-tab').className = ''; + + $('credits').style.display = 'none'; + $('credits-tab').className = ''; + }, + miscTabShow: function(){ + $('message').style.display = 'none'; + $('message-tab').className = ''; + + $('context-menu').style.display = 'none'; + $('context-menu-tab').className = ''; + + $('misc').style.display = ''; + $('misc-tab').className = 'active'; + + $('credits').style.display = 'none'; + $('credits-tab').className = ''; + }, + creditsTabShow: function(){ + $('message').style.display = 'none'; + $('message-tab').className = ''; + + $('context-menu').style.display = 'none'; + $('context-menu-tab').className = ''; + + $('misc').style.display = 'none'; + $('misc-tab').className = ''; + + $('credits').style.display = ''; + $('credits-tab').className = 'active'; + } +}; + +D3menu.init(); + +$$('input').each(function(el){ + el.addEvent('change', function(){D3menu.save_options(false);}); +}); \ No newline at end of file diff --git a/js/mootools.js b/js/mootools.js new file mode 100644 index 0000000..ff7095d --- /dev/null +++ b/js/mootools.js @@ -0,0 +1,436 @@ +/* +--- +MooTools: the javascript framework + +web build: + - http://mootools.net/core/7c56cfef9dddcf170a5d68e3fb61cfd7 + +packager build: + - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff + +copyrights: + - [MooTools](http://mootools.net) + +licenses: + - [MIT License](http://mootools.net/license.txt) +... +*/ +(function(){this.MooTools={version:"1.3",build:"a3eed692dd85050d80168ec2c708efe901bb7db3"};var n=this.typeOf=function(i){if(i==null){return"null";}if(i.$family){return i.$family(); +}if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments"; +}if("item" in i){return"collection";}}}return typeof i;};var h=this.instanceOf=function(s,i){if(s==null){return false;}var r=s.$constructor||s.constructor; +while(r){if(r===i){return true;}r=r.parent;}return s instanceof i;};var f=this.Function;var o=true;for(var j in {toString:1}){o=null;}if(o){o=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]; +}f.prototype.overloadSetter=function(r){var i=this;return function(t,s){if(t==null){return this;}if(r||typeof t!="string"){for(var u in t){i.call(this,u,t[u]); +}if(o){for(var v=o.length;v--;){u=o[v];if(t.hasOwnProperty(u)){i.call(this,u,t[u]);}}}}else{i.call(this,t,s);}return this;};};f.prototype.overloadGetter=function(r){var i=this; +return function(t){var u,s;if(r||typeof t!="string"){u=t;}else{if(arguments.length>1){u=arguments;}}if(u){s={};for(var v=0;v-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim(); +},camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase()); +});},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1"); +},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); +return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1); +}return(a[c]!=null)?a[c]:"";});}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0).toFixed(a<0?-a:0); +return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a1)?Array.slice(arguments,1):null;return function(){if(!b&&!arguments.length){return a.call(c);}if(b&&arguments.length){return a.apply(c,b.concat(Array.from(arguments))); +}return a.apply(c,b||arguments);};},pass:function(b,c){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},delay:function(b,c,a){return setTimeout(this.pass(a,c),b); +},periodical:function(c,b,a){return setInterval(this.pass(a,b),c);}});Object.extend({subset:function(c,f){var e={};for(var d=0,a=f.length;d]*>([\s\S]*?)<\/script>/gi,function(r,s){e+=s+"\n"; +return"";});if(p===true){o.exec(e);}else{if(typeOf(p)=="function"){p(e,q);}}return q;});o.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event}); +this.Window=this.$constructor=new Type("Window",function(){});this.$family=Function.from("window").hide();Window.mirror(function(e,p){i[e]=p;});this.Document=k.$constructor=new Type("Document",function(){}); +k.$family=Function.from("document").hide();Document.mirror(function(e,p){k[e]=p;});k.html=k.documentElement;k.head=k.getElementsByTagName("head")[0];if(k.execCommand){try{k.execCommand("BackgroundImageCache",false,true); +}catch(g){}}if(this.attachEvent&&!this.addEventListener){var d=function(){this.detachEvent("onunload",d);k.head=k.html=k.window=null;};this.attachEvent("onunload",d); +}var m=Array.from;try{m(k.html.childNodes);}catch(g){Array.from=function(p){if(typeof p!="string"&&Type.isEnumerable(p)&&typeOf(p)!="array"){var e=p.length,q=new Array(e); +while(e--){q[e]=p[e];}return q;}return m(p);};var l=Array.prototype,n=l.slice;["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice"].each(function(e){var p=l[e]; +Array[e]=function(q){return p.apply(Array.from(q),n.call(arguments,1));};});}})();var Event=new Type("Event",function(a,i){if(!i){i=window;}var o=i.document; +a=a||i.event;if(a.$extended){return a;}this.$extended=true;var n=a.type,k=a.target||a.srcElement,m={},c={};while(k&&k.nodeType==3){k=k.parentNode;}if(n.indexOf("key")!=-1){var b=a.which||a.keyCode; +var q=Object.keyOf(Event.Keys,b);if(n=="keydown"){var d=b-111;if(d>0&&d<13){q="f"+d;}}if(!q){q=String.fromCharCode(b).toLowerCase();}}else{if(n.test(/click|mouse|menu/i)){o=(!o.compatMode||o.compatMode=="CSS1Compat")?o.html:o.body; +m={x:(a.pageX!=null)?a.pageX:a.clientX+o.scrollLeft,y:(a.pageY!=null)?a.pageY:a.clientY+o.scrollTop};c={x:(a.pageX!=null)?a.pageX-i.pageXOffset:a.clientX,y:(a.pageY!=null)?a.pageY-i.pageYOffset:a.clientY}; +if(n.test(/DOMMouseScroll|mousewheel/)){var l=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}var h=(a.which==3)||(a.button==2),p=null;if(n.test(/over|out/)){p=a.relatedTarget||a[(n=="mouseover"?"from":"to")+"Element"]; +var j=function(){while(p&&p.nodeType==3){p=p.parentNode;}return true;};var g=(Browser.firefox2)?j.attempt():j();p=(g)?p:null;}}else{if(n.test(/gesture|touch/i)){this.rotation=a.rotation; +this.scale=a.scale;this.targetTouches=a.targetTouches;this.changedTouches=a.changedTouches;var f=this.touches=a.touches;if(f&&f[0]){var e=f[0];m={x:e.pageX,y:e.pageY}; +c={x:e.clientX,y:e.clientY};}}}}return Object.append(this,{event:a,type:n,page:m,client:c,rightClick:h,wheel:l,relatedTarget:document.id(p),target:document.id(k),code:b,key:q,shift:a.shiftKey,control:a.ctrlKey,alt:a.altKey,meta:a.metaKey}); +});Event.Keys={enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46};Event.implement({stop:function(){return this.stopPropagation().preventDefault(); +},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault(); +}else{this.event.returnValue=false;}return this;}});(function(){var a=this.Class=new Type("Class",function(h){if(instanceOf(h,Function)){h={initialize:h}; +}var g=function(){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null; +return i;}.extend(this).implement(h);g.$constructor=a;g.prototype.$constructor=g;g.prototype.parent=c;return g;});var c=function(){if(!this.$caller){throw new Error('The method "parent" cannot be called.'); +}var g=this.$caller.$name,h=this.$caller.$owner.parent,i=(h)?h.prototype[g]:null;if(!i){throw new Error('The method "'+g+'" has no parent.');}return i.apply(this,arguments); +};var e=function(g){for(var h in g){var j=g[h];switch(typeOf(j)){case"object":var i=function(){};i.prototype=j;g[h]=e(new i);break;case"array":g[h]=j.clone(); +break;}}return g;};var b=function(g,h,j){if(j.$origin){j=j.$origin;}var i=function(){if(j.$protected&&this.$caller==null){throw new Error('The method "'+h+'" cannot be called.'); +}var l=this.caller,m=this.$caller;this.caller=m;this.$caller=i;var k=j.apply(this,arguments);this.$caller=m;this.caller=l;return k;}.extend({$owner:g,$origin:j,$name:h}); +return i;};var f=function(h,i,g){if(a.Mutators.hasOwnProperty(h)){i=a.Mutators[h].call(this,i);if(i==null){return this;}}if(typeOf(i)=="function"){if(i.$hidden){return this; +}this.prototype[h]=(g)?i:b(this,h,i);}else{Object.merge(this.prototype,h,i);}return this;};var d=function(g){g.$prototyping=true;var h=new g;delete g.$prototyping; +return h;};a.implement("implement",f.overloadSetter());a.Mutators={Extends:function(g){this.parent=g;this.prototype=d(g);},Implements:function(g){Array.from(g).each(function(j){var h=new j; +for(var i in h){f.call(this,i,h[i],true);}},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments)); +return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty(); +return this;}});var a=function(b){return b.replace(/^on([A-Z])/,function(c,d){return d.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(d,c,b){d=a(d); +this.$events[d]=(this.$events[d]||[]).include(c);if(b){c.internal=true;}return this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);}return this; +},fireEvent:function(e,c,b){e=a(e);var d=this.$events[e];if(!d){return this;}c=Array.from(c);d.each(function(f){if(b){f.delay(b,this,c);}else{f.apply(this,c); +}},this);return this;},removeEvent:function(e,d){e=a(e);var c=this.$events[e];if(c&&!d.internal){var b=c.indexOf(d);if(b!=-1){delete c[b];}}return this; +},removeEvents:function(d){var e;if(typeOf(d)=="object"){for(e in d){this.removeEvent(e,d[e]);}return this;}if(d){d=a(d);}for(e in this.$events){if(d&&d!=e){continue; +}var c=this.$events[e];for(var b=c.length;b--;){this.removeEvent(e,c[b]);}}return this;}});this.Options=new Class({setOptions:function(){var b=this.options=Object.merge.apply(null,[{},this.options].append(arguments)); +if(!this.addEvent){return this;}for(var c in b){if(typeOf(b[c])!="function"||!(/^on[A-Z]/).test(c)){continue;}this.addEvent(c,b[c]);delete b[c];}return this; +}});})();(function(){var k,n,l,g,a={},c={},m=/\\/g;var e=function(q,p){if(q==null){return null;}if(q.Slick===true){return q;}q=(""+q).replace(/^\s+|\s+$/g,""); +g=!!p;var o=(g)?c:a;if(o[q]){return o[q];}k={Slick:true,expressions:[],raw:q,reverse:function(){return e(this.raw,true);}};n=-1;while(q!=(q=q.replace(j,b))){}k.length=k.expressions.length; +return o[q]=(g)?h(k):k;};var i=function(o){if(o==="!"){return" ";}else{if(o===" "){return"!";}else{if((/^!/).test(o)){return o.replace(/^!/,"");}else{return"!"+o; +}}}};var h=function(u){var r=u.expressions;for(var p=0;p+)\\s*|(\\s+)|(+|\\*)|\\#(+)|\\.(+)|\\[\\s*(+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|:+(+)(?:\\((?:(?:([\"'])([^\\12]*)\\12)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(//,"["+f(">+~`!@$%^&={}\\;/g,"(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])").replace(//g,"(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])")); +function b(x,s,D,z,r,C,q,B,A,y,u,F,v,p,w){if(s||n===-1){k.expressions[++n]=[];l=-1;if(s){return"";}}if(D||z||l===-1){D=D||" ";var t=k.expressions[n];if(g&&t[l]){t[l].reverseCombinator=i(D); +}t[++l]={combinator:D,tag:"*"};}var o=k.expressions[n][l];if(r){o.tag=r.replace(m,"");}else{if(C){o.id=C.replace(m,"");}else{if(q){q=q.replace(m,"");if(!o.classList){o.classList=[]; +}if(!o.classes){o.classes=[];}o.classList.push(q);o.classes.push({value:q,regexp:new RegExp("(^|\\s)"+f(q)+"(\\s|$)")});}else{if(F){w=w||p;w=w?w.replace(m,""):null; +if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:F.replace(m,""),value:w});}else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,G;switch(A){case"^=":G=new RegExp("^"+f(u)); +break;case"$=":G=new RegExp(f(u)+"$");break;case"~=":G=new RegExp("(^|\\s)"+f(u)+"(\\s|$)");break;case"|=":G=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(H){return u==H; +};break;case"*=":E=function(H){return H&&H.indexOf(u)>-1;};break;case"!=":E=function(H){return u!=H;};break;default:E=function(H){return !!H;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false; +};}if(!E){E=function(H){return H&&G.test(H);};}if(!o.attributes){o.attributes=[];}o.attributes.push({key:B,operator:A,value:u,test:E});}}}}}return"";}var d=(this.Slick||{}); +d.parse=function(o){return e(o);};d.escapeRegExp=f;if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);(function(){var b={}; +b.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};b.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(Object.prototype.toString.call(c)==="[object XMLDocument]")||(c.nodeType===9&&c.documentElement.nodeName!=="HTML"); +};b.setDocument=function(n){if(n.nodeType===9){}else{if(n.ownerDocument){n=n.ownerDocument;}else{if(n.navigator){n=n.document;}else{return;}}}if(this.document===n){return; +}this.document=n;var o=this.root=n.documentElement;this.isXMLDocument=this.isXML(n);this.brokenStarGEBTN=this.starSelectsClosedQSA=this.idGetsName=this.brokenMixedCaseQSA=this.brokenGEBCN=this.brokenCheckedQSA=this.brokenEmptyAttributeQSA=this.isHTMLDocument=false; +var i,j,p,k;var l,c;var q=n.createElement("div");o.appendChild(q);try{c="slick_getbyid_test";q.innerHTML='';this.isHTMLDocument=!!n.getElementById(c); +}catch(m){}if(this.isHTMLDocument){q.style.display="none";q.appendChild(n.createComment(""));j=(q.getElementsByTagName("*").length>0);try{q.innerHTML="foo"; +l=q.getElementsByTagName("*");i=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}this.brokenStarGEBTN=j||i;if(q.querySelectorAll){try{q.innerHTML="foo"; +l=q.querySelectorAll("*");this.starSelectsClosedQSA=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}}try{c="slick_id_gets_name";q.innerHTML=''; +this.idGetsName=n.getElementById(c)===q.firstChild;}catch(m){}try{q.innerHTML='';this.brokenMixedCaseQSA=!q.querySelectorAll(".MiXedCaSe").length; +}catch(m){}try{q.innerHTML='';q.getElementsByClassName("b").length;q.firstChild.className="b";k=(q.getElementsByClassName("b").length!=2); +}catch(m){}try{q.innerHTML='';p=(q.getElementsByClassName("a").length!=2);}catch(m){}this.brokenGEBCN=k||p;try{q.innerHTML=''; +this.brokenCheckedQSA=(q.querySelectorAll(":checked").length==0);}catch(m){}try{q.innerHTML='';this.brokenEmptyAttributeQSA=(q.querySelectorAll('[class*=""]').length!=0); +}catch(m){}}o.removeChild(q);q=null;this.hasAttribute=(o&&this.isNativeCode(o.hasAttribute))?function(s,r){return s.hasAttribute(r);}:function(s,r){s=s.getAttributeNode(r); +return !!(s&&(s.specified||s.nodeValue));};this.contains=(o&&this.isNativeCode(o.contains))?function(r,s){return r.contains(s);}:(o&&o.compareDocumentPosition)?function(r,s){return r===s||!!(r.compareDocumentPosition(s)&16); +}:function(r,s){if(s){do{if(s===r){return true;}}while((s=s.parentNode));}return false;};this.documentSorter=(o.compareDocumentPosition)?function(s,r){if(!s.compareDocumentPosition||!r.compareDocumentPosition){return 0; +}return s.compareDocumentPosition(r)&4?-1:s===r?0:1;}:("sourceIndex" in o)?function(s,r){if(!s.sourceIndex||!r.sourceIndex){return 0;}return s.sourceIndex-r.sourceIndex; +}:(n.createRange)?function(u,s){if(!u.ownerDocument||!s.ownerDocument){return 0;}var t=u.ownerDocument.createRange(),r=s.ownerDocument.createRange();t.setStart(u,0); +t.setEnd(u,0);r.setStart(s,0);r.setEnd(s,0);return t.compareBoundaryPoints(Range.START_TO_END,r);}:null;this.getUID=(this.isHTMLDocument)?this.getUIDHTML:this.getUIDXML; +};b.search=function(k,x,F,q){var w=this.found=(q)?null:(F||[]);if(!k){return w;}if(k.navigator){k=k.document;}else{if(!k.nodeType){return w;}}var t,E;var o=this.uniques={}; +if(this.document!==(k.ownerDocument||k)){this.setDocument(k);}var y=!!(F&&F.length);if(y){for(E=w.length;E--;){this.uniques[this.getUID(w[E])]=true;}}if(typeof x=="string"){for(E=this.overrides.length; +E--;){var u=this.overrides[E];if(u.regexp.test(x)){var v=u.method.call(k,x,w,q);if(v===false){continue;}if(v===true){return w;}return v;}}t=this.Slick.parse(x); +if(!t.length){return w;}}else{if(x==null){return w;}else{if(x.Slick){t=x;}else{if(this.contains(k.documentElement||k,x)){(w)?w.push(x):w=x;return w;}else{return w; +}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!y&&(q||(t.length==1&&t.expressions[0].length==1)))?this.pushArray:this.pushUID; +if(w==null){w=[];}var D,B,A;var C,K,z,J,G,s,p;var r,l,c,H,I=t.expressions;search:for(E=0;(l=I[E]);E++){for(D=0;(c=l[D]);D++){C="combinator:"+c.combinator; +if(!this[C]){continue search;}K=(this.isXMLDocument)?c.tag:c.tag.toUpperCase();z=c.id;J=c.classList;G=c.classes;s=c.attributes;p=c.pseudos;H=(D===(l.length-1)); +this.bitUniques={};if(H){this.uniques=o;this.found=w;}else{this.uniques={};this.found=[];}if(D===0){this[C](k,K,z,G,s,p,J);if(q&&H&&w.length){break search; +}}else{if(q&&H){for(B=0,A=r.length;B1)){this.sort(w);}return(q)?(w[0]||null):w;};b.uidx=1;b.uidk="slick:uniqueid";b.getUIDXML=function(i){var c=i.getAttribute(this.uidk); +if(!c){c=this.uidx++;i.setAttribute(this.uidk,c);}return c;};b.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};b.sort=function(c){if(!this.documentSorter){return c; +}c.sort(this.documentSorter);return c;};b.cacheNTH={};b.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;b.parseNTHArgument=function(l){var j=l.match(this.matchNTH); +if(!j){return false;}var k=j[2]||false;var i=j[1]||1;if(i=="-"){i=-1;}var c=+j[3]||0;j=(k=="n")?{a:i,b:c}:(k=="odd")?{a:2,b:1}:(k=="even")?{a:2,b:0}:{a:0,b:i}; +return(this.cacheNTH[l]=j);};b.createNTHPseudo=function(k,i,c,j){return function(n,l){var p=this.getUID(n);if(!this[c][p]){var v=n.parentNode;if(!v){return false; +}var m=v[k],o=1;if(j){var u=n.nodeName;do{if(m.nodeName!==u){continue;}this[c][this.getUID(m)]=o++;}while((m=m[i]));}else{do{if(m.nodeType!==1){continue; +}this[c][this.getUID(m)]=o++;}while((m=m[i]));}}l=l||"n";var q=this.cacheNTH[l]||this.parseNTHArgument(l);if(!q){return false;}var t=q.a,s=q.b,r=this[c][p]; +if(t==0){return s==r;}if(t>0){if(r":function(k,c,m,j,i,l){if((k=k.firstChild)){do{if(k.nodeType===1){this.push(k,c,m,j,i,l);}}while((k=k.nextSibling)); +}},"+":function(k,c,m,j,i,l){while((k=k.nextSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break;}}},"^":function(k,c,m,j,i,l){k=k.firstChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l); +}else{this["combinator:+"](k,c,m,j,i,l);}}},"~":function(l,c,n,k,i,m){while((l=l.nextSibling)){if(l.nodeType!==1){continue;}var j=this.getUID(l);if(this.bitUniques[j]){break; +}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}},"++":function(k,c,m,j,i,l){this["combinator:+"](k,c,m,j,i,l);this["combinator:!+"](k,c,m,j,i,l);},"~~":function(k,c,m,j,i,l){this["combinator:~"](k,c,m,j,i,l); +this["combinator:!~"](k,c,m,j,i,l);},"!":function(k,c,m,j,i,l){while((k=k.parentNode)){if(k!==this.document){this.push(k,c,m,j,i,l);}}},"!>":function(k,c,m,j,i,l){k=k.parentNode; +if(k!==this.document){this.push(k,c,m,j,i,l);}},"!+":function(k,c,m,j,i,l){while((k=k.previousSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break; +}}},"!^":function(k,c,m,j,i,l){k=k.lastChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l);}else{this["combinator:!+"](k,c,m,j,i,l);}}},"!~":function(l,c,n,k,i,m){while((l=l.previousSibling)){if(l.nodeType!==1){continue; +}var j=this.getUID(l);if(this.bitUniques[j]){break;}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}}};for(var h in a){b["combinator:"+h]=a[h];}var g={empty:function(c){var i=c.firstChild; +return !(i&&i.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,i){return !this.matchNode(c,i);},contains:function(c,i){return(c.innerText||c.textContent||"").indexOf(i)>-1; +},"first-child":function(c){while((c=c.previousSibling)){if(c.nodeType===1){return false;}}return true;},"last-child":function(c){while((c=c.nextSibling)){if(c.nodeType===1){return false; +}}return true;},"only-child":function(j){var i=j;while((i=i.previousSibling)){if(i.nodeType===1){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeType===1){return false; +}}return true;},"nth-child":b.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":b.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":b.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":b.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(i,c){return this["pseudo:nth-child"](i,""+c+1); +},even:function(i,c){return this["pseudo:nth-child"](i,"2n");},odd:function(i,c){return this["pseudo:nth-child"](i,"2n+1");},"first-of-type":function(c){var i=c.nodeName; +while((c=c.previousSibling)){if(c.nodeName===i){return false;}}return true;},"last-of-type":function(c){var i=c.nodeName;while((c=c.nextSibling)){if(c.nodeName===i){return false; +}}return true;},"only-of-type":function(j){var i=j,k=j.nodeName;while((i=i.previousSibling)){if(i.nodeName===k){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeName===k){return false; +}}return true;},enabled:function(c){return(c.disabled===false);},disabled:function(c){return(c.disabled===true);},checked:function(c){return c.checked||c.selected; +},focus:function(c){return this.isHTMLDocument&&this.document.activeElement===c&&(c.href||c.type||this.hasAttribute(c,"tabindex"));},root:function(c){return(c===this.root); +},selected:function(c){return c.selected;}};for(var d in g){b["pseudo:"+d]=g[d];}b.attributeGetters={"class":function(){return("className" in this)?this.className:this.getAttribute("class"); +},"for":function(){return("htmlFor" in this)?this.htmlFor:this.getAttribute("for");},href:function(){return("href" in this)?this.getAttribute("href",2):this.getAttribute("href"); +},style:function(){return(this.style)?this.style.cssText:this.getAttribute("style");}};b.getAttribute=function(j,c){var k=this.attributeGetters[c];if(k){return k.call(j); +}var i=j.getAttributeNode(c);return i?i.nodeValue:null;};b.overrides=[];b.override=function(c,i){this.overrides.push({regexp:c,method:i});};var f=/\[.*[*$^]=(?:["']{2})?\]/; +b.override(/./,function(p,n,o){if(!this.querySelectorAll||this.nodeType!=9||!b.isHTMLDocument||b.brokenMixedCaseQSA||(b.brokenCheckedQSA&&p.indexOf(":checked")>-1)||(b.brokenEmptyAttributeQSA&&f.test(p))||e.disableQSA){return false; +}var j,m;try{if(o){return this.querySelector(p)||null;}else{j=this.querySelectorAll(p);}}catch(k){return false;}var l,c=!!(n.length);if(b.starSelectsClosedQSA){for(l=0; +m=j[l++];){if(m.nodeName>"@"&&(!c||!b.uniques[b.getUIDHTML(m)])){n.push(m);}}}else{for(l=0;m=j[l++];){if(!c||!b.uniques[b.getUIDHTML(m)]){n.push(m);}}}if(c){b.sort(n); +}return true;});b.override(/^[\w-]+$|^\*$/,function(p,n,o){var j=p;if(j=="*"&&b.brokenStarGEBTN){return false;}var k=this.getElementsByTagName(j);if(o){return k[0]||null; +}var l,m,c=!!(n.length);for(l=0;m=k[l++];){if(!c||!b.uniques[b.getUID(m)]){n.push(m);}}if(c){b.sort(n);}return true;});b.override(/^\.[\w-]+$/,function(o,q,m){if(!b.isHTMLDocument||(!this.getElementsByClassName&&this.querySelectorAll)){return false; +}var c,k,l,j=!!(q&&q.length),p=o.substring(1);if(this.getElementsByClassName&&!b.brokenGEBCN){c=this.getElementsByClassName(p);if(m){return c[0]||null; +}for(l=0;k=c[l++];){if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}else{var n=new RegExp("(^|\\s)"+e.escapeRegExp(p)+"(\\s|$)");c=this.getElementsByTagName("*"); +for(l=0;k=c[l++];){p=k.className;if(!p||!n.test(p)){continue;}if(m){return k;}if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}if(j){b.sort(q);}return(m)?null:true; +});b.override(/^#[\w-]+$/,function(l,j,k){if(!b.isHTMLDocument||this.nodeType!=9){return false;}var m=l.substring(1),i=this.getElementById(m);if(!i){return j; +}if(b.idGetsName&&i.getAttributeNode("id").nodeValue!=m){return false;}if(k){return i||null;}var c=!!(j.length);if(!c||!b.uniques[b.getUIDHTML(i)]){j.push(i); +}if(c){b.sort(j);}return true;});if(typeof document!="undefined"){b.setDocument(document);}var e=b.Slick=(this.Slick||{});e.version="0.9dev";e.search=function(i,j,c){return b.search(i,j,c); +};e.find=function(c,i){return b.search(c,i,null,true);};e.contains=function(c,i){b.setDocument(c);return b.contains(c,i);};e.getAttribute=function(i,c){return b.getAttribute(i,c); +};e.match=function(i,c){if(!(i&&c)){return false;}if(!c||c===i){return true;}if(typeof c!="string"){return false;}b.setDocument(i);return b.matchNode(i,c); +};e.defineAttributeGetter=function(c,i){b.attributeGetters[c]=i;return this;};e.lookupAttributeGetter=function(c){return b.attributeGetters[c];};e.definePseudo=function(c,i){b["pseudo:"+c]=function(k,j){return i.call(k,j); +};return this;};e.lookupPseudo=function(c){var i=b["pseudo:"+c];if(i){return function(j){return i.call(this,j);};}return null;};e.override=function(i,c){b.override(i,c); +return this;};e.isXML=b.isXML;e.uidOf=function(c){return b.getUIDHTML(c);};if(!this.Slick){this.Slick=e;}}).apply((typeof exports!="undefined")?exports:this); +var Element=function(b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!b.test(/^[\w-]+$/)){var e=Slick.parse(b).expressions[0][0]; +b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var f=0,c=d.length;f=this.length){delete this[e--];}return this; +}.protect());}Elements.implement(Array.prototype);Array.mirror(Elements);var f;try{var a=document.createElement("");f=(a.name=="x");}catch(c){}var d=function(e){return(""+e).replace(/&/g,"&").replace(/"/g,"""); +};Document.implement({newElement:function(e,h){if(h&&h.checked!=null){h.defaultChecked=h.checked;}if(f&&h){e="<"+e;if(h.name){e+=' name="'+d(h.name)+'"'; +}if(h.type){e+=' type="'+d(h.type)+'"';}e+=">";delete h.name;delete h.type;}return this.id(this.createElement(e)).set(h);}});})();Document.implement({newTextNode:function(a){return this.createTextNode(a); +},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var a={string:function(d,c,b){d=Slick.find(b,"#"+d.replace(/(\W)/g,"\\$1")); +return(d)?a.element(d,c):null;},element:function(b,c){$uid(b);if(!c&&!b.$family&&!(/^object|embed$/i).test(b.tagName)){Object.append(b,Element.Prototype); +}return b;},object:function(c,d,b){if(c.toElement){return a.element(c.toElement(b),d);}return null;}};a.textnode=a.whitespace=a.window=a.document=function(b){return b; +};return function(c,e,d){if(c&&c.$family&&c.uid){return c;}var b=typeOf(c);return(a[b])?a[b](c,e,d||document):null;};})()});if(window.$==null){Window.implement("$",function(a,b){return document.id(a,b,this.document); +});}Window.implement({getDocument:function(){return this.document;},getWindow:function(){return this;}});[Document,Element].invoke("implement",{getElements:function(a){return Slick.search(this,a,new Elements); +},getElement:function(a){return document.id(Slick.find(this,a));}});if(window.$$==null){Window.implement("$$",function(a){if(arguments.length==1){if(typeof a=="string"){return Slick.search(this.document,a,new Elements); +}else{if(Type.isEnumerable(a)){return new Elements(a);}}}return new Elements(arguments);});}(function(){var j={},h={};var l={input:"checked",option:"selected",textarea:"value"}; +var d=function(o){return(h[o]||(h[o]={}));};var i=function(p){if(p.removeEvents){p.removeEvents();}if(p.clearAttributes){p.clearAttributes();}var o=p.uid; +if(o!=null){delete j[o];delete h[o];}return p;};var n=["defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"]; +var c=["compact","nowrap","ismap","declare","noshade","checked","disabled","readOnly","multiple","selected","noresize","defer"];var f={html:"innerHTML","class":"className","for":"htmlFor",text:(function(){var o=document.createElement("div"); +return(o.innerText==null)?"textContent":"innerText";})()};var m=["type"];var g=["value","defaultValue"];var k=/^(?:href|src|usemap)$/i;c=c.associate(c); +n=n.associate(n.map(String.toLowerCase));m=m.associate(m);Object.append(f,g.associate(g));var b={before:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o); +}},after:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o.nextSibling);}},bottom:function(p,o){o.appendChild(p);},top:function(p,o){o.insertBefore(p,o.firstChild); +}};b.inside=b.bottom;var a=function(r,q){if(!r){return q;}r=Slick.parse(r);var p=r.expressions;for(var o=p.length;o--;){p[o][0].combinator=q;}return r; +};Element.implement({set:function(q,p){var o=Element.Properties[q];(o&&o.set)?o.set.call(this,p):this.setProperty(q,p);}.overloadSetter(),get:function(p){var o=Element.Properties[p]; +return(o&&o.get)?o.get.apply(this):this.getProperty(p);}.overloadGetter(),erase:function(p){var o=Element.Properties[p];(o&&o.erase)?o.erase.apply(this):this.removeProperty(p); +return this;},setProperty:function(p,q){p=n[p]||p;if(q==null){return this.removeProperty(p);}var o=f[p];(o)?this[o]=q:(c[p])?this[p]=!!q:this.setAttribute(p,""+q); +return this;},setProperties:function(o){for(var p in o){this.setProperty(p,o[p]);}return this;},getProperty:function(p){p=n[p]||p;var o=f[p]||m[p];return(o)?this[o]:(c[p])?!!this[p]:(k.test(p)?this.getAttribute(p,2):(o=this.getAttributeNode(p))?o.nodeValue:null)||null; +},getProperties:function(){var o=Array.from(arguments);return o.map(this.getProperty,this).associate(o);},removeProperty:function(p){p=n[p]||p;var o=f[p]; +(o)?this[o]="":(c[p])?this[p]=false:this.removeAttribute(p);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this; +},hasClass:function(o){return this.className.clean().contains(o," ");},addClass:function(o){if(!this.hasClass(o)){this.className=(this.className+" "+o).clean(); +}return this;},removeClass:function(o){this.className=this.className.replace(new RegExp("(^|\\s)"+o+"(?:\\s|$)"),"$1");return this;},toggleClass:function(o,p){if(p==null){p=!this.hasClass(o); +}return(p)?this.addClass(o):this.removeClass(o);},adopt:function(){var r=this,o,t=Array.flatten(arguments),s=t.length;if(s>1){r=o=document.createDocumentFragment(); +}for(var q=0;q"))[0]);},getLast:function(o){return document.id(Slick.search(this,a(o,">")).getLast()); +},getParent:function(o){return document.id(Slick.find(this,a(o,"!")));},getParents:function(o){return Slick.search(this,a(o,"!"),new Elements);},getSiblings:function(o){return Slick.search(this,a(o,"~~"),new Elements); +},getChildren:function(o){return Slick.search(this,a(o,">"),new Elements);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument; +},getElementById:function(o){return document.id(Slick.find(this,"#"+(""+o).replace(/(\W)/g,"\\$1")));},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(o){return o.selected; +}));},toQueryString:function(){var o=[];this.getElements("input, select, textarea").each(function(q){var p=q.type;if(!q.name||q.disabled||p=="submit"||p=="reset"||p=="file"||p=="image"){return; +}var r=(q.get("tag")=="select")?q.getSelected().map(function(s){return document.id(s).get("value");}):((p=="radio"||p=="checkbox")&&!q.checked)?null:q.get("value"); +Array.from(r).each(function(s){if(typeof s!="undefined"){o.push(encodeURIComponent(q.name)+"="+encodeURIComponent(s));}});});return o.join("&");},clone:function(r,p){r=r!==false; +var w=this.cloneNode(r);var v=function(C,B){if(!p){C.removeAttribute("id");}if(Browser.ie){C.clearAttributes();C.mergeAttributes(B);C.removeAttribute("uid"); +if(C.options){var D=C.options,z=B.options;for(var A=D.length;A--;){D[A].selected=z[A].selected;}}}var E=l[B.tagName.toLowerCase()];if(E&&B[E]){C[E]=B[E]; +}};var s;if(r){var o=w.getElementsByTagName("*"),q=this.getElementsByTagName("*");for(s=o.length;s--;){v(o[s],q[s]);}}v(w,this);if(Browser.ie){var u=this.getElementsByTagName("object"),t=w.getElementsByTagName("object"),y=u.length,x=t.length; +for(s=0;s",""],select:[1,""],tbody:[2,"","
"],tr:[3,"","
"]}; +a.thead=a.tfoot=a.tbody;var b={set:function(){var f=Array.flatten(arguments).join("");var g=(!c&&a[this.get("tag")]);if(g){var h=d;h.innerHTML=g[1]+f+g[2]; +for(var e=g[0];e--;){h=h.firstChild;}this.empty().adopt(h.childNodes);}else{this.innerHTML=f;}}};b.erase=b.set;return b;})();(function(){var c=document.html; +Element.Properties.styles={set:function(f){this.setStyles(f);}};var e=(c.style.opacity!=null);var d=/alpha\(opacity=([\d.]+)\)/i;var b=function(g,f){if(!g.currentStyle||!g.currentStyle.hasLayout){g.style.zoom=1; +}if(e){g.style.opacity=f;}else{f=(f==1)?"":"alpha(opacity="+f*100+")";var h=g.style.filter||g.getComputedStyle("filter")||"";g.style.filter=h.test(d)?h.replace(d,f):h+f; +}};Element.Properties.opacity={set:function(g){var f=this.style.visibility;if(g==0&&f!="hidden"){this.style.visibility="hidden";}else{if(g!=0&&f!="visible"){this.style.visibility="visible"; +}}b(this,g);},get:(e)?function(){var f=this.style.opacity||this.getComputedStyle("opacity");return(f=="")?1:f;}:function(){var f,g=(this.style.filter||this.getComputedStyle("filter")); +if(g){f=g.match(d);}return(f==null||g==null)?1:(f[1]/100);}};var a=(c.style.cssFloat==null)?"styleFloat":"cssFloat";Element.implement({getComputedStyle:function(h){if(this.currentStyle){return this.currentStyle[h.camelCase()]; +}var g=Element.getDocument(this).defaultView,f=g?g.getComputedStyle(this,null):null;return(f)?f.getPropertyValue((h==a)?"float":h.hyphenate()):null;},setOpacity:function(f){b(this,f); +return this;},getOpacity:function(){return this.get("opacity");},setStyle:function(g,f){switch(g){case"opacity":return this.set("opacity",parseFloat(f)); +case"float":g=a;}g=g.camelCase();if(typeOf(f)!="string"){var h=(Element.Styles[g]||"@").split(" ");f=Array.from(f).map(function(k,j){if(!h[j]){return""; +}return(typeOf(k)=="number")?h[j].replace("@",Math.round(k)):k;}).join(" ");}else{if(f==String(Number(f))){f=Math.round(f);}}this.style[g]=f;return this; +},getStyle:function(l){switch(l){case"opacity":return this.get("opacity");case"float":l=a;}l=l.camelCase();var f=this.style[l];if(!f||l=="zIndex"){f=[]; +for(var k in Element.ShortStyles){if(l!=k){continue;}for(var j in Element.ShortStyles[k]){f.push(this.getStyle(j));}return f.join(" ");}f=this.getComputedStyle(l); +}if(f){f=String(f);var h=f.match(/rgba?\([\d\s,]+\)/);if(h){f=f.replace(h[0],h[0].rgbToHex());}}if(Browser.opera||(Browser.ie&&isNaN(parseFloat(f)))){if(l.test(/^(height|width)$/)){var g=(l=="width")?["left","right"]:["top","bottom"],i=0; +g.each(function(m){i+=this.getStyle("border-"+m+"-width").toInt()+this.getStyle("padding-"+m).toInt();},this);return this["offset"+l.capitalize()]-i+"px"; +}if(Browser.opera&&String(f).indexOf("px")!=-1){return f;}if(l.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return f;},setStyles:function(g){for(var f in g){this.setStyle(f,g[f]); +}return this;},getStyles:function(){var f={};Array.flatten(arguments).each(function(g){f[g]=this.getStyle(g);},this);return f;}});Element.Styles={left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"}; +Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(l){var k=Element.ShortStyles; +var g=Element.Styles;["margin","padding"].each(function(m){var n=m+l;k[m][n]=g[n]="@px";});var j="border"+l;k.border[j]=g[j]="@px @ rgb(@, @, @)";var i=j+"Width",f=j+"Style",h=j+"Color"; +k[j]={};k.borderWidth[i]=k[j][i]=g[i]="@px";k.borderStyle[f]=k[j][f]=g[f]="@";k.borderColor[h]=k[j][h]=g[h]="rgb(@, @, @)";});})();(function(){Element.Properties.events={set:function(c){this.addEvents(c); +}};[Element,Window,Document].invoke("implement",{addEvent:function(g,i){var j=this.retrieve("events",{});if(!j[g]){j[g]={keys:[],values:[]};}if(j[g].keys.contains(i)){return this; +}j[g].keys.push(i);var h=g,c=Element.Events[g],e=i,k=this;if(c){if(c.onAdd){c.onAdd.call(this,i);}if(c.condition){e=function(l){if(c.condition.call(this,l)){return i.call(this,l); +}return true;};}h=c.base||h;}var f=function(){return i.call(k);};var d=Element.NativeEvents[h];if(d){if(d==2){f=function(l){l=new Event(l,k.getWindow()); +if(e.call(k,l)===false){l.stop();}};}this.addListener(h,f);}j[g].values.push(f);return this;},removeEvent:function(f,e){var d=this.retrieve("events");if(!d||!d[f]){return this; +}var i=d[f];var c=i.keys.indexOf(e);if(c==-1){return this;}var h=i.values[c];delete i.keys[c];delete i.values[c];var g=Element.Events[f];if(g){if(g.onRemove){g.onRemove.call(this,e); +}f=g.base||f;}return(Element.NativeEvents[f])?this.removeListener(f,h):this;},addEvents:function(c){for(var d in c){this.addEvent(d,c[d]);}return this; +},removeEvents:function(c){var e;if(typeOf(c)=="object"){for(e in c){this.removeEvent(e,c[e]);}return this;}var d=this.retrieve("events");if(!d){return this; +}if(!c){for(e in d){this.removeEvents(e);}this.eliminate("events");}else{if(d[c]){d[c].keys.each(function(f){this.removeEvent(c,f);},this);delete d[c]; +}}return this;},fireEvent:function(f,d,c){var e=this.retrieve("events");if(!e||!e[f]){return this;}d=Array.from(d);e[f].keys.each(function(g){if(c){g.delay(c,this,d); +}else{g.apply(this,d);}},this);return this;},cloneEvents:function(f,e){f=document.id(f);var d=f.retrieve("events");if(!d){return this;}if(!e){for(var c in d){this.cloneEvents(f,c); +}}else{if(d[e]){d[e].keys.each(function(g){this.addEvent(e,g);},this);}}return this;}});try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent; +}}catch(b){}Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1}; +var a=function(c){var d=c.relatedTarget;if(d==null){return true;}if(!d){return false;}return(d!=this&&d.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(d)); +};Element.Events={mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}}; +})();(function(){Element.implement({scrollTo:function(h,i){if(b(this)){this.getWindow().scrollTo(h,i);}else{this.scrollLeft=h;this.scrollTop=i;}return this; +},getSize:function(){if(b(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(b(this)){return this.getWindow().getScrollSize(); +}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(b(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop}; +},getScrolls:function(){var i=this.parentNode,h={x:0,y:0};while(i&&!b(i)){h.x+=i.scrollLeft;h.y+=i.scrollTop;i=i.parentNode;}return h;},getOffsetParent:function(){var h=this; +if(b(h)){return null;}if(!Browser.ie){return h.offsetParent;}while((h=h.parentNode)){if(d(h,"position")!="static"||b(h)){return h;}}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var m=this.getBoundingClientRect(),j=document.id(this.getDocument().documentElement),l=j.getScroll(),o=this.getScrolls(),n=(d(this,"position")=="fixed"); +return{x:m.left.toInt()+o.x+((n)?0:l.x)-j.clientLeft,y:m.top.toInt()+o.y+((n)?0:l.y)-j.clientTop};}var i=this,h={x:0,y:0};if(b(this)){return h;}while(i&&!b(i)){h.x+=i.offsetLeft; +h.y+=i.offsetTop;if(Browser.firefox){if(!f(i)){h.x+=c(i);h.y+=g(i);}var k=i.parentNode;if(k&&d(k,"overflow")!="visible"){h.x+=c(k);h.y+=g(k);}}else{if(i!=this&&Browser.safari){h.x+=c(i); +h.y+=g(i);}}i=i.offsetParent;}if(Browser.firefox&&!f(this)){h.x-=c(this);h.y-=g(this);}return h;},getPosition:function(k){if(b(this)){return{x:0,y:0};}var l=this.getOffsets(),i=this.getScrolls(); +var h={x:l.x-i.x,y:l.y-i.y};if(k&&(k=document.id(k))){var j=k.getPosition();return{x:h.x-j.x-c(k),y:h.y-j.y-g(k)};}return h;},getCoordinates:function(j){if(b(this)){return this.getWindow().getCoordinates(); +}var h=this.getPosition(j),i=this.getSize();var k={left:h.x,top:h.y,width:i.x,height:i.y};k.right=k.left+k.width;k.bottom=k.top+k.height;return k;},computePosition:function(h){return{left:h.x-e(this,"margin-left"),top:h.y-e(this,"margin-top")}; +},setPosition:function(h){return this.setStyles(this.computePosition(h));}});[Document,Window].invoke("implement",{getSize:function(){var h=a(this);return{x:h.clientWidth,y:h.clientHeight}; +},getScroll:function(){var i=this.getWindow(),h=a(this);return{x:i.pageXOffset||h.scrollLeft,y:i.pageYOffset||h.scrollTop};},getScrollSize:function(){var j=a(this),i=this.getSize(),h=this.getDocument().body; +return{x:Math.max(j.scrollWidth,h.scrollWidth,i.x),y:Math.max(j.scrollHeight,h.scrollHeight,i.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var h=this.getSize(); +return{top:0,left:0,bottom:h.y,right:h.x,height:h.y,width:h.x};}});var d=Element.getComputedStyle;function e(h,i){return d(h,i).toInt()||0;}function f(h){return d(h,"-moz-box-sizing")=="border-box"; +}function g(h){return e(h,"border-top-width");}function c(h){return e(h,"border-left-width");}function b(h){return(/^(?:body|html)$/i).test(h.tagName); +}function a(h){var i=h.getDocument();return(!i.compatMode||i.compatMode=="CSS1Compat")?i.html:i.body;}})();Element.alias({position:"setPosition"});[Window,Document,Element].invoke("implement",{getHeight:function(){return this.getSize().y; +},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x; +},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y; +},getLeft:function(){return this.getPosition().x;}});(function(){var e=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(g){this.subject=this.subject||this; +this.setOptions(g);},getTransition:function(){return function(g){return -(Math.cos(Math.PI*g)-1)/2;};},step:function(){var g=Date.now();if(g=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2); +break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a&&a[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,[a+2]); +});});(function(){var a=("onprogress" in new Browser.Request);var c=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(d){this.xhr=new Browser.Request(); +this.setOptions(d);this.headers=this.options.headers;},onStateChange:function(){var d=this.xhr;if(d.readyState!=4||!this.running){return;}this.running=false; +this.status=0;Function.attempt(function(){var e=d.status;this.status=(e==1223)?204:e;}.bind(this));d.onreadystatechange=function(){};clearTimeout(this.timer); +this.response={text:this.xhr.responseText||"",xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status)){this.success(this.response.text,this.response.xml); +}else{this.failure();}},isSuccess:function(){var d=this.status;return(d>=200&&d<300);},isRunning:function(){return !!this.running;},processScripts:function(d){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(d); +}return d.stripScripts(this.options.evalScripts);},success:function(e,d){this.onSuccess(this.processScripts(e),d);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain(); +},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},loadstart:function(d){this.fireEvent("loadstart",[d,this.xhr]); +},progress:function(d){this.fireEvent("progress",[d,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(d,e){this.headers[d]=e; +return this;},getHeader:function(d){return Function.attempt(function(){return this.xhr.getResponseHeader(d);}.bind(this));},check:function(){if(!this.running){return true; +}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));return false;}return false;},send:function(n){if(!this.check(n)){return this; +}this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var k=typeOf(n);if(k=="string"||k=="element"){n={data:n};}var g=this.options; +n=Object.append({data:g.data,url:g.url,method:g.method},n);var i=n.data,e=String(n.url),d=n.method.toLowerCase();switch(typeOf(i)){case"element":i=document.id(i).toQueryString(); +break;case"object":case"hash":i=Object.toQueryString(i);}if(this.options.format){var l="format="+this.options.format;i=(i)?l+"&"+i:l;}if(this.options.emulation&&!["get","post"].contains(d)){var j="_method="+d; +i=(i)?j+"&"+i:j;d="post";}if(this.options.urlEncoded&&["post","put"].contains(d)){var f=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+f; +}if(!e){e=document.location.pathname;}var h=e.lastIndexOf("/");if(h>-1&&(h=e.indexOf("#"))>-1){e=e.substr(0,h);}if(this.options.noCache){e+=(e.contains("?")?"&":"?")+String.uniqueID(); +}if(i&&d=="get"){e+=(e.contains("?")?"&":"?")+i;i=null;}var m=this.xhr;if(a){m.onloadstart=this.loadstart.bind(this);m.onprogress=this.progress.bind(this); +}m.open(d.toUpperCase(),e,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in m){m.withCredentials=true; +}m.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(p,o){try{m.setRequestHeader(o,p);}catch(q){this.fireEvent("exception",[o,p]); +}},this);this.fireEvent("request");m.send(i);if(!this.options.async){this.onStateChange();}if(this.options.timeout){this.timer=this.timeout.delay(this.options.timeout,this); +}return this;},cancel:function(){if(!this.running){return this;}this.running=false;var d=this.xhr;d.abort();clearTimeout(this.timer);d.onreadystatechange=d.onprogress=d.onloadstart=function(){}; +this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(d){b[d]=function(e){return this.send({data:e,method:d}); +};});c.implement(b);Element.Properties.send={set:function(d){var e=this.get("send").cancel();e.setOptions(d);return this;},get:function(){var d=this.retrieve("send"); +if(!d){d=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")});this.store("send",d);}return d;}};Element.implement({send:function(d){var e=this.get("send"); +e.send({data:this,url:d||e.options.url});return this;}});})();Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:"text/html, application/xml, text/xml, */*"}},success:function(e){var d=this.options,b=this.response; +b.html=e.stripScripts(function(f){b.javascript=f;});var c=b.html.match(/]*>([\s\S]*?)<\/body>/i);if(c){b.html=c[1];}var a=new Element("div").set("html",b.html); +b.tree=a.childNodes;b.elements=a.getElements("*");if(d.filter){b.tree=b.elements.filter(d.filter);}if(d.update){document.id(d.update).empty().set("html",b.html); +}else{if(d.append){document.id(d.append).adopt(a.getChildren());}}if(d.evalScripts){Browser.exec(b.javascript);}this.onSuccess(b.tree,b.elements,b.html,b.javascript); +}});Element.Properties.load={set:function(a){var b=this.get("load").cancel();b.setOptions(a);return this;},get:function(){var a=this.retrieve("load");if(!a){a=new Request.HTML({data:this,link:"cancel",update:this,method:"get"}); +this.store("load",a);}return a;}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Type.isObject,url:Type.isString})); +return this;}});if(!this.JSON){this.JSON={};}Object.append(JSON,{$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(a){return JSON.$specialChars[a]||"\\u00"+Math.floor(a.charCodeAt()/16).toString(16)+(a.charCodeAt()%16).toString(16); +},encode:function(b){switch(typeOf(b)){case"string":return'"'+b.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(b.map(JSON.encode).clean())+"]"; +case"object":case"hash":var a=[];Object.each(b,function(e,d){var c=JSON.encode(e);if(c){a.push(JSON.encode(d)+":"+c);}});return"{"+a+"}";case"number":case"boolean":return String(b); +case"null":return"null";}return null;},decode:function(string,secure){if(typeOf(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null; +}return eval("("+string+")");}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);Object.append(this.headers,{Accept:"application/json","X-Request":"JSON"}); +},success:function(c){var b=this.options.secure;var a=this.response.json=Function.attempt(function(){return JSON.decode(c,b);});if(a==null){this.onFailure(); +}else{this.onSuccess(a,c);}}});var Cookie=new Class({Implements:Options,options:{path:"/",domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(b,a){this.key=b; +this.setOptions(a);},write:function(b){if(this.options.encode){b=encodeURIComponent(b);}if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path; +}if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure"; +}this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)"); +return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write("");return this;}}); +Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose(); +};(function(j,l){var m,g,f=[],c,b,n=true;try{n=j.frameElement!=null;}catch(i){}var h=function(){clearTimeout(b);if(m){return;}Browser.loaded=m=true;l.removeListener("DOMContentLoaded",h).removeListener("readystatechange",a); +l.fireEvent("domready");j.fireEvent("domready");};var a=function(){for(var e=f.length;e--;){if(f[e]()){h();return true;}}return false;};var k=function(){clearTimeout(b); +if(!a()){b=setTimeout(k,10);}};l.addListener("DOMContentLoaded",h);var d=l.createElement("div");if(d.doScroll&&!n){f.push(function(){try{d.doScroll();return true; +}catch(o){}return false;});c=true;}if(l.readyState){f.push(function(){var e=l.readyState;return(e=="loaded"||e=="complete");});}if("onreadystatechange" in l){l.addListener("readystatechange",a); +}else{c=true;}if(c){k();}Element.Events.domready={onAdd:function(e){if(m){e.call(this);}}};Element.Events.load={base:"load",onAdd:function(e){if(g&&this==j){e.call(this); +}},condition:function(){if(this==j){h();delete Element.Events.load;}return true;}};j.addEvent("load",function(){g=true;});})(window,document);(function(){var id=0; +var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"window",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object; +},initialize:function(path,options){this.instance="Swiff_"+id++;this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance; +var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks; +var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments); +};})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +params.movie=path;}else{properties.type="application/x-shockwave-flash";}properties.data=path;var build='';}}build+="";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild; +},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement()); +return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction(''+__flash__argumentsToXML(arguments,2)+""); +return eval(rs);};})(); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..187f33b --- /dev/null +++ b/manifest.json @@ -0,0 +1,19 @@ +{ + "name": "d3coder", + "version": "0.3", + "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", + "options_page": "html/menu.html", + "permissions": ["contextMenus","notifications","tabs","http://*/*"], + "background_page": "html/background.html", + "icons": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" }, + "content_scripts": [ + { + "matches": [""], + "css": ["styles/content.css"], + "js": ["js/mootools.js", "js/contentWorker.js"], + "all_frames": true + }] +} diff --git a/styles/content.css b/styles/content.css new file mode 100644 index 0000000..2cb1ebb --- /dev/null +++ b/styles/content.css @@ -0,0 +1,29 @@ +/** + * @version 0.3 + * @author Maik Kulbe + * @copyright (c) 2010 Maik Kulbe + */ +#D3-inject +{ + position: fixed; + width: 100%; + height: 200px; + bottom: 0; + left: 0; + background: lightgrey; + border-top: 1px solid grey; + overflow: auto; + -webkit-box-shadow: 0px 0px 30px #000; +} + +#D3-inject-close +{ + position: fixed; + bottom: 200px; + left: 10px; +} + +#D3-inject-heading +{ + font-size: 15px; +} \ No newline at end of file diff --git a/styles/menu.css b/styles/menu.css new file mode 100644 index 0000000..06d7c0c --- /dev/null +++ b/styles/menu.css @@ -0,0 +1,146 @@ +/** + * @version 0.3 + * @author Maik Kulbe + * @copyright (c) 2010 Maik Kulbe + */ + +body +{ + padding: 0; + margin: 0; + margin: 0; + padding: 0; + height: 100%; +} +h1 +{ + -webkit-padding-end: 24px; + padding-top: 1em; + padding-bottom: 1em; + border-bottom: 1px solid #eeeeee; + -webkit-padding-start: 0; + font-size: 125%; + color: #54637f; + margin: 0; +} +blockquote +{ + padding: 1em; + background: #eeeeee; + border: 1px solid #54637f; + border-radius: 5px; +} +#menubar +{ + margin: 0; + width: 250px; + height: 100%; + position: absolute; + left: 0; + top: 0; + background: #ebeff9; +} + +#optionsFrame +{ + height: 100%; + width: 100%; + position: absolute; +} + +#options, #footer +{ + padding-left: 265px; +} + +#menu +{ + margin: 30px 0px 0px 0px; + -webkit-padding-start: 0px; +} + +#menubar-title +{ + font-size: 16px; + text-align: right; + padding-right: 30px; + margin-top: 15px; + font-weight: normal; + +} + +#menu li +{ + width: 240px; + clear: both; + text-align: right; + padding: 5px 10px 5px 0px; + list-style-type: none; + position: relative; + border: none; + cursor: pointer; + margin: 0; + color: #4b74d6; +} + +#menu .active +{ + background: -webkit-gradient( + linear, + left top, + right top, + color-stop(0.15, #ebeff9), + color-stop(1, #b3c4eb) + ); + font-weight: bold; + color: black; +} + +.label, .inputs +{ + margin: 5px 0px; +} +#buttons +{ + position: absolute; + left: 0px; + bottom: 30px; + text-align: center; + color: #54637f; +} +#buttons button +{ + background: none; + border: none; +} +.buttonlabel +{ + color: white; + font-size: 20px; + font-weight: bold; + margin-left: 62px; + margin-top: -39px; + position: absolute; + text-shadow: black 1px 1px 1px; +} + +.buttonlabel.pressed +{ + color: grey; + text-shadow: white 1px 1px 1px; +} + +#footer +{ + position: absolute; + bottom: 0px; + height: 100px; + left: 0px; + background: -webkit-gradient( + linear, + left top, + right top, + color-stop(0.5, #ebeff9), + color-stop(1, #FFFFFF) + ); +} \ No newline at end of file From 3543cadaafbc28eb83e5989e04a63dd07d38dde0 Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Sun, 31 Oct 2010 19:51:26 +0100 Subject: [PATCH 02/61] Finished fondling. --- README | 0 gitignore | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 README create mode 100644 gitignore diff --git a/README b/README new file mode 100644 index 0000000..e69de29 diff --git a/gitignore b/gitignore new file mode 100644 index 0000000..ef7fd7e --- /dev/null +++ b/gitignore @@ -0,0 +1,3 @@ +.settings +.settings/* +.project \ No newline at end of file From 98198326fb7a5b9cdb6fd221408845352cf7864a Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Sun, 31 Oct 2010 19:56:45 +0100 Subject: [PATCH 03/61] gitignore moved --- gitignore => .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename gitignore => .gitignore (100%) diff --git a/gitignore b/.gitignore similarity index 100% rename from gitignore rename to .gitignore From 931635913cd6f1a853a0a80e82251de6276e22a7 Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Sun, 31 Oct 2010 19:59:33 +0100 Subject: [PATCH 04/61] . --- .project | 17 ----------------- .settings/.jsdtscope | 6 ------ .settings/org.eclipse.core.resources.prefs | 3 --- .../org.eclipse.wst.jsdt.ui.superType.container | 1 - .../org.eclipse.wst.jsdt.ui.superType.name | 1 - 5 files changed, 28 deletions(-) delete mode 100644 .project delete mode 100644 .settings/.jsdtscope delete mode 100644 .settings/org.eclipse.core.resources.prefs delete mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container delete mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name diff --git a/.project b/.project deleted file mode 100644 index 6d459c9..0000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - d3coder - - - - - - org.eclipse.wst.jsdt.core.javascriptValidator - - - - - - org.eclipse.wst.jsdt.core.jsNature - - diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope deleted file mode 100644 index 967f99d..0000000 --- a/.settings/.jsdtscope +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 56dbd08..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sat Oct 23 15:44:09 CEST 2010 -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container deleted file mode 100644 index 3bd5d0a..0000000 --- a/.settings/org.eclipse.wst.jsdt.ui.superType.container +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name deleted file mode 100644 index 05bd71b..0000000 --- a/.settings/org.eclipse.wst.jsdt.ui.superType.name +++ /dev/null @@ -1 +0,0 @@ -Window \ No newline at end of file From 2729f3be1d3733c1a26131a0693d1b98155463fd Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Wed, 3 Nov 2010 11:23:40 +0100 Subject: [PATCH 05/61] first prev of v.4 --- html/background.html | 24 ++++++++++++------------ html/menu.html | 13 +++++++++++-- js/D3.js | 36 +++++++++++++++++++++++++++++++++++- js/contentWorker.js | 2 +- js/menu.js | 24 ++++++++++++++++-------- styles/content.css | 9 ++++++++- 6 files changed, 83 insertions(+), 25 deletions(-) diff --git a/html/background.html b/html/background.html index e29eb43..3154059 100644 --- a/html/background.html +++ b/html/background.html @@ -1,6 +1,6 @@ @@ -47,17 +47,6 @@ var idTimestamp=chrome.contextMenus.create(menu); } -if(localStorage.getItem("functions_timestamp") == '1') { - menu = { - "title" : "Unix timestamp to date conversion", - "parentId" : idMain, - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Timestamp to Date", D3.timestampToDate(info.selectionText));} - }; - - var idTimestamp=chrome.contextMenus.create(menu); -} - if(localStorage.getItem("functions_bin2hex") == '1') { menu = { "title" : "bin2hex", @@ -135,6 +124,17 @@ var idTimestamp=chrome.contextMenus.create(menu); } +if(localStorage.getItem("functions_crc32") == '1') { + menu = { + "title" : "CRC32", + "parentId" : idMain, + "contexts" : ["selection", "editable"], + "onclick" : function(info, tab){D3.createPopup("CRC32", D3.crc32(info.selectionText));} + }; + + var idTimestamp=chrome.contextMenus.create(menu); +} + if(localStorage.getItem("functions_quoted_printable_decode") == '1') { menu = { "title" : "Quoted printable decode", diff --git a/html/menu.html b/html/menu.html index 0e1a20f..d3d4e4c 100644 --- a/html/menu.html +++ b/html/menu.html @@ -1,6 +1,6 @@ diff --git a/html/menu.html b/html/menu.html index 5e6198a..db10698 100644 --- a/html/menu.html +++ b/html/menu.html @@ -1,6 +1,6 @@ - - - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/html/menu.html b/html/menu.html index db10698..3cc0fb1 100644 --- a/html/menu.html +++ b/html/menu.html @@ -31,6 +31,13 @@

Message Type:

Adding an HTML element to the bottom of the site + +
+
+ + Copy results to clipboard after conversion (be aware that this might override data in your clipboard, so use with caution!) +
+
diff --git a/images/clipboard.png b/images/clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..8815d917b32b5ae6ca1c8e4984665d764dba1fd2 GIT binary patch literal 1154 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 HxWxP)b1e`8 literal 22797 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 diff --git a/images/icon16.png b/images/icon16.png index c27ce87ba0c0f8c29c1172acdac76f7c11d4e7bb..4a6cd39927fd0206649b98ac7ed041ccb2db22dd 100644 GIT binary patch delta 650 zcmV;50(JeE9Nz_yIFpkKEPn!JNkl z1RI`W|Ha1$KX)B_C9Pl=w19Q|5)mvaR>{mFs6({ zf=mzhob&L`X1%s(Aa+uhFgy?yRd@x+kelY6USn(z7U?7b@0ki zGl78gYSQ&g;O+ZWZ2s9oWvdB-JT;!pyvDR;37i-a?w9i*IavmmBn1-)Osk~tw2u1D zaV)N^p{{crf$1tdoVMWA+&j4OB#2JPK-iHYxCu`&0WZO6ntC}0+lMdswf-CWo-te- zp2Y0@GOWv=;D3`Wg9~2@SAGFJVoxvuAAxM+K&k?{$|i{97Z8z;9TDSj9|JvUH0Qq2%yFNB?1^@s607*qoM6N<$g7TI$_W%F@ delta 3561 zcmV1(+O=IDZOHX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHzp+MQEpR8#2| zJ@?-9LQ9B%luK_?6$l_wLW_VDktQl32@pz%A)(n7QNa;KMFbnjpojyGj)066Q7jCK z3fKqaA)=0hqlk*i`{8?|Yu3E?=FR@K*FNX0^PRKL2fzpnmVZbyQ8j=JsX`tR;Dg7+ z#^K~HK!FM*Z~zbpvt%K2{UZSY_f59&ghTmgWD z0l;*TI7e|ZE3OddDgXd@nX){&BsoQaTL>+22Uk}v9w^R9 z7b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&VLTB&dxTDwhmt{>c0m6B4T3W z{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag_lst-4?wj5py}FI^KkfnJUm6A zkh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu;v|7GU4cgg_~63K^h~83&yop* zV%+ABM}Pdc3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy|77CdEc*jK-!%ZR zYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%Vpd|o+W=WE9003S@ zBra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3xE7zHiSYX#KJ-lLJDMn9CBbOtb#%) zhRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+BaR3c znT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifqlp|(=5QHQ7#Gr)$3XMd?XsE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*S zAPZv|vv@2aYYnT0b%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5c zP6_8IrP_yNQcbz0DW*G2J50yT%*~?B)|oY%Ju%lZ z=bPu7*PGwBU|M)uEVih&xMfMQuC{HqePL%}7iYJ{uEXw=y_0>qeSeMpJqHbk*$%56 zS{;6Kv~mM9! zg3B(KJ}#RZ#@)!hR=4N)wtYw9={>5&Kw=W)*2gz%*kgNq+ zEef_mrsz~!DAy_nvS(#iX1~pe$~l&+o-57m%(KedkbgIv@1Ote62cPUlD4IWOIIx& zSmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1 z<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}fWY1>O zX6feMEq|U{4wkBy=9dm`4cXeX4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC- zq*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-N zmiuj8txj!m?Z*Ss1N{dh4z}01)YTo*JycSU)_*JOM-ImyzW$x>cP$Mz4ONYt#^NJz zM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<%N829{ zoHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^=R3SR z&VO9;xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4uDM)mx$b(swR>jw=^LIm&fWCA zdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-It-MdXU-UrjLD@syht)q@{@mE_ z+<$7occAmp+(-8Yg@e!jk@b%cLj{kSkAKUC4TkHUI6gT!;y-fz>HMcd&t%Ugo)`Y2 z{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24cOCDe z-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx40Fg)> ze*;5FL_t(|+FX)dXq$Bu#((ce(zMOmOxrFdT^2*v>RL@4jHr`sjA>^lvr?xh$R^$l z#Sa+B?j}sd8$m@BLD|}i;m0mk?>07UH)y*-W;1uAwKKJA+O%CwnxuKZ{_o$5y_Mku zhXW4>4(E3s1?UIj+|?FM)298tx{#)+e_;hBAY36$%X~mV`PvbV&zlPYNnlWsQUahT zN<6YD>htN^z-t2s4(;9b#DkXY$kS(jDveD1nsKEZ(>48vd|__QTbPql78T$WkWv(7 zA=cV9^-llpqmgL4ULTGLq*Q7PGuqAHr;IOt9+_P;3@N4j%yr#ofFh97fk9xXf4(ko z@Ia#JbzN2IfBz#l5D4f1m2%lB9DBppmuP9ZI9t9hTz9^>TKwEQV^Ra+nx+N%Qys5# z$0Hpto&3tVZ+6y4I1GTlR#PL}AFnNDehID=OWH!!Ua@U!2ABt4)`7T`^5Gq+?qp(1 zjOe9Hb!4+JJbV{dE=MexZ0zVsf6CZQp*35m#DG1(9U!g)=QLHDYTX>~>*(6rUD^Ml z6FhQ6=N?rn6)Q1(%GY%5MxpWV^0?(#Kian44veV43EQy`efZt?tM!cyV(Qvu!T)qS zJFb=t(;b`6&smnWY}@u*Kngga0rfz0sZzb;QZFuae_&7pO28@0!WF@qVfq?2G|xNpe?2wu!t)!? zU!HJFHPet%{-Xi!0w$35z?6W1=L0A}`sVaZCB1EH#VoFL?c1>}UwrmTrd>*0fRG0= z?p4U^DbEjiFN*{5j|X-yT=?|3yE75_HnJ(2P=NPJqijkK#>X?KMX2vC<+ zz4u;G?;Z8B66z8XLPA0fp@Mor1=|;lZ47aMxDXSF!3B(MY{zzNY~w&|<3|MdB=Ef# z5+cNRFE+34Zg^(C^XxP8pV{B%zinopUjV=OzuYe#03HAy0REo>!hdQeO2TTVu7%Z3 z38A&qLTKHz5L$OY2(6nDLh5IP;JO(hxPDd$s-G2t>gI&Nx;Y`BeqIQupBMb<<^`X+ zdBMAGUht|rD0tP*3m&xx1-F`c!L{a~;8J~1aH^gc9INI9`^tI2wsKyushAg(+vf$# z@;Sl0Y)&vOn-z>pXMY8wlG$sUif4+|2832kEQD515K=QiNX^t@wbKOGP7_pnfS}r$ ze`<&+0i`Drc}Oo5or-jZ!s@P5A-rD`#=2oWr(a z4x8wY!ZjEDZ-k6N%8PW>SupT z+4ytB?0E`@idig6r?D=dL0LY7W!Vhosu@g64`5s}gHiDTHWy8^v1l5Dg6W%T1A;0> zgrJI1f+|J{s(&0OsB)aZ%5efJCkUvTAfRdzzsgDcs;2O*n!=}Q3h%0Eyeg-0+dheN z*#xoV;*_?!)H@+jSW8;wdajr!g;`#XOyQ~;$G7SLGtXV(>caQ@^!Gb_b?XPNeDw|Qe!jrPD>pd%{+~H?=6zZo zJwtHQA&d(rFe#qGxM+$kg_CS5m}F!ABnEkt=;uzLmouS0AV4)F1e6WoUp9eA6)+nmp=QNmp}Z1=P&<>qZdBqv6nw$>ZK1Dc3=Y8CBrxu58Rt)zkC1BoOtVVo_zHaX3zeSp%>nx z>(_77dh9K-hhM}ZXOsWu zoOF6bPKl>I<&s?JN ziPyQ32r&v zxaM@@n$v?zP7lsGdvRK>7l)i)>~ngt%h`v`wqBIkz5MplM;w3W8fLqGg@4)3V_5Eb z7TdPtICq@HrE@XIjuY6mAIEmjNsKBFq2b$%EU6d0)Ls-RJt&fUkSBE^PwYUJ(2gu_ zxB38=tPa5?yA$W^PMoqkamwz(DZ3lT>~0*gy0Oph!7jT8+pHdJvU;%2+KW+g2gUtI zxOjDeq^aMdUw;JSoxj3p=YKJ_H2pl|*5ioc2ha>@K`&)5illDjiJiz3_aKXJM;5mm zS!@fsF}u_UIAyjAPMLdf%Iv^#DTmAs>@qvC%k0E9vlHu#F03=UP-b>vmC=oPdKczt zUGyG(mDyK6!@cJ>=vF_;y80umZ+HfSrPen*gI?otH1p?K9ng$kVt*%!#7^W19mwO` zk;k_oi)%#|vkTqmo#;k4{R@EfHo-By4TtnL?9-lxZDU zrFCGL)`3M@CuXUgY)NWInbk|f{45?P2G)6%5JPv zcB4#bLz&WsRZ1I{DQ%c1w_}#vj%ji`Cdqp+PTqrI{BAZU?IE)Dm((44g}SFMk~;G; zp~Gj0>^w|vaS8pYO3pWVG1t5eSxhUkm=@&GyO2fgyf^sP27h!S>d*Nu_#34Ia8&uC4|60}r)Ur0H4oPGy86n>6_LeY`WXAK2K|J4`g>h^h zlCXMY;kD?7*Ps(tjZSD4(vV7|A=}jlSjRUC%D6_X;(r>kh-<_=t_ic)CQM?RFp1rX zerPROt+V{&;a|ERS?CT7V_OKV8mDRMIJ3uJ;qa+97&v^Iq~=*9;Z1A^ub|d%GhHG2 zJXYw$rG0U<)fBQes21JODs)3C(Fv(Q8oV88P#KaymHGgymR6Nu=FR z&QO9WCmMpdIGBNVl8Utf73c(&qZ6n?C$JPrKnaq7V)X&$QFVe@R2`;~b(lofVG>!- zhR|wc{@aoImb2O=pV;c5e*l0>N7D-0!K7Rmi-@c7-^A@*n-;Ze;KZ=HTIhjH3 z^oFkEV7?=-^~Ca6OAe9%6%zkaqyZ&J{fm+M6(R8}R3BivwMHQ)m>=jsRpMc0NmK8<;tTG8;wXqMIT*CSA<4>2@*7Y4^ zjmtK)0;}*2iKj1O1G71HoNbTfRCgMtA%D4OdF3JT&OzdpgSOW;^#NN#Dum4;6|DC! z!y#!WUoCvIJiy;?-{wzWF5HK?bLS53S#5|t^U?J#MDAP2kr!X#tq(ro<`Vq7AAV%^ z$rETA+Ok4!%4$PLR$By-J1%H(Z zhJj^B-3w?OeB!=c&ukn==2OD>;Zy$v*p1k;09~JA^a4t`e&gnS$ZKCNkkPQ8)wc0y zSx4~j7FQmUnIM)KQ15TZT!s}L>7E#Prz3LDLfbt9ZMSr^-O|+uZ1gV`Hu$R$Ip^@$ zvuBrwc>SG^5xL~D#vzL+Rqy?PjDKdtZaL_B3CrZ_GAHXfG39(BSV%JO_wohe+GLeUr3H+OREPrE%ezUyx z`j-Owez}O8Q<1o(BXQ3_?3RJ1YdT`rG_+k(&~`~i?2?SwISH|IqWS=R??OS}yAVx> zOm>evdG9Us!%rkt^&@r3V&aMC?+2tbu-Ybxz}yxx>jyClS0Q!FU~_OG$4_5aUi3HGgH`wHt&03onv>oEmc8Ejl5R2IUZZU}LV-VRzBeIW1WEX|VE=qlXo?Din z=az}WH50i@24cG;5>#D0ar_LY&b>+Z#FH5L=Q8!gNzT50nKQ3l#yM^~Yn9QsB~;MV zH_xGGU*dPKz0GrHE`P9p{wN8mHpF%@Jfhr+wtWm@yXeJiqY&FhA+n9Um(5nRmW%io z0InH=!X+JrOF9bYG-OUGXewiQ#4?7pRxvzm5rx<`4ozh=k61?Xh(#n)`#5wQ;#h07 zm6awTtTGE@wRsq;%tBdd5{!mvFk04Imj>R7*d`LO%~nJ<5r0dCBeIS_WF3yyeTAtH zP&lUw3gfOm{llR%8;c((XdnIueQXRwULDNR;7dE5p%Nh9OplA+`!d zY!!;gDr7OsU__R|Xe}4CoTgIIyBRLGQfkOb=|)ycH-DnB)ZOcql8vmC8nQxSz(ZPc z^>1*jl58wlrEPFcLu?>uh}R1m;`PEx@p?f+tS@MY^aTykIzdCUPFN{gC#)3dEv9uh z#d0gO6v7J4yJz`gTJn33my-!AH08oW%gL6KUwcSPQT*U8f59&ghTmgWD z0l;*TI7e|ZE3OddDgXd@nX){&BsoQaTL>+22Uk}v9w^R9 z7b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&VLTB&dxTDwhmt{>c0m6B4T3W z{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag_lst-4?wj5py}FI^KkfnJUm6A zkh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu;v|7GU4cgg_~63K^h~83&yop* zV%+ABM}Pdc3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy|77CdEc*jK-!%ZR zYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%Vpd|o+W=WE9003S@ zBra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3xE7zHiSYX#KJ-lLJDMn9CBbOtb#%) zhRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+BaR3c znT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifqlp|(=5QHQ7#Gr)$3XMd?XsE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*S zAPZv|vv@2aYYnT0b%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5c zP6_8IrP_yNQcbz0DW*G2J50yT%*~?B)|oY%Ju%lZ z=bPu7*PGwBU|M)uEVih&xMfMQuC{HqePL%}7iYJ{uEXw=y_0>qeSeMpJqHbk*$%56 zS{;6Kv~mM9! zg3B(KJ}#RZ#@)!hR=4N)wtYw9={>5&Kw=W)*2gz%*kgNq+ zEef_mrsz~!DAy_nvS(#iX1~pe$~l&+o-57m%(KedkbgIv@1Ote62cPUlD4IWOIIx& zSmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1 z<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}fWY1>O zX6feMEq|U{4wkBy=9dm`4cXeX4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC- zq*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-N zmiuj8txj!m?Z*Ss1N{dh4z}01)YTo*JycSU)_*JOM-ImyzW$x>cP$Mz4ONYt#^NJz zM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<%N829{ zoHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^=R3SR z&VO9;xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4uDM)mx$b(swR>jw=^LIm&fWCA zdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-It-MdXU-UrjLD@syht)q@{@mE_ z+<$7occAmp+(-8Yg@e!jk@b%cLj{kSkAKUC4TkHUI6gT!;y-fz>HMcd&t%Ugo)`Y2 z{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24cOCDe z-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx40Fg)> ze-pwLy(nC%LA^e%wxV7UQQGQ7P>?>bTD+8|l|s1)Bz+`(C7HCHG?Pq{c|XrN>;92_ zV4x2K_xJ5@?{j9)p5NMguk~AN?O^~Ee*l{RBmnFX&+{=^b^!R8=qmt{0QLd6n=zKE z^@r{r9zFL^&{un3EIxd{#cVlHEEPY>7|Z&-fuF@EM%R!|HpclGO;ejCE*&VV<<*R_ zXNYK)BuU>;RdodsZDWiz8aRmPHpbWn01pCaBckn$vCZOnGZ8IdjI9RH$pLI2f1=w2 zSO91gAQd9&GWq}xF|gC2K=@^|*}PGbq^@K-c@5_r0A|RNY&DxK!9Y#$kFq2?HBDVA zaXDnO*^>;I?^V3dan7f4&NZvWc21V$*Zkf-(FYMF03;Y=YXx{? zF#(_xKpPW46O1vX;=@(|UE+Nke`mZ~Hpz00$5#O00^kAQ1K=x`ikDf;77c(y(>0I8 zB`TN8ipgZkl*?sDSu5M^R{N<^xnu@Wnm|d5*?J7XD1f-w)f|8l06jWb;)<{GV z##kE>bsE4JW36IgC!dK3mnz|49RpwjU>Css073w2Mc)I!3BU%x3_ubUe*g%82A~X} z2p}r}j{z74FeKVIfV2=oGlckiihQA$VmDTY0^zL!yaRw&0Ivs72OtQ*Bg<0Nyq4*{ zRV$VT8>WPvisG^q3Pmj*A1l7nbu{tZ{+AMG&z^8@%k|b3L z!A$_T5U$7=s{*hZKm&lSe*jh!(T^^O^$= z;!<`?l5`5d0DwUN=K!Pt6o+EbTLCl>Q3qqJ6+k-?tv?SZfXx6Re-#QG5lY(xpqg_& zY?93Fn0Ht$wt^fFOJeSB5D#RWCIa(f5_t8wTYE)7xq|@xb#X{ zEk7)AsRuw9K<)B+*RpALwB&OIB*#ypl+Qu4yUGjKtSv8F^?q}8wbx#`y`v)|r326Y zQSaULxTF`0CcDcGo=@99(&C%(%(0Q~vpLO`OeYqpYS}fB9RCy%v1~p&N0#I)0GTsB zsFS_{z-<8be^wmtO-7#sh*T(u5(P_Vqlhux~=xM~x zM5yVy8{_wE-X?$Kh8ykG)!y?Ag3s?aul~&K)^(3=m))~2SBLvgfH4kUEZCNM**uwp z>pEE+cE_N{UEM25Qr=;6sG6=`Gdz0kb^tvxkQvl2a zFlVWve|>UpW9?;C)jo_2_F>LV{}TVqUF&P`9?CE7U6(rd+6ykbTS2t{l(zev`bt`5 zIl%)%0FDDV0^pP&yZohifnVUABnZg?z~wd}*i>zA3N|#OoXbE{0?C{1_)<0AW4YzN z|FmjEn$zV*jo&Xd+bJYYf?1Gdm8iB$@Koyse+3Y%D*>JDpI= zC0zH#do)>=`Fj<>?r@kdzwvV^T`i%uu^Elk_E3$PJOZp$u)3py;3R>o5`3GX$g=SI z3~v*Ru{`J8$rzh8wc6>f^#o_sHa5dzwO(=Pd-&v(zI4_FLRi(*xd5A~>)ME_sZJs~0id2SwpA#x zfj7b!+si9l{em<_U!`zII3%Om*PRSKLESce{3xj z^FE8kG7bRwLax40%r6JQE%XD7u{Pl$ZxOLe#Bk=;0{FO)j&aTp`@MmkqvNCBQ>t7O zjw&~+QasR0ML3-)9j&dvdf}2N6&`p)!zAGL_P6eiu@h}=lkNP;SjnMy;PO->r6{mk zZ8~SXoXKUH7+BI~wV%o6vUaoCfBbmmK?JaxF$RNl4FL?lKf)MeM3^}ekKJLj+74>q z3z=*x+niOh$z+1Gw5D#_^k)AeV;yFhJKYM*7AqvPHKVvaCjlgLg&YA; zYpQ)u0O$vx1K4L^d|PZVC>t+`C?d3dMA+iXk|jNyE2-lgdf4OlquMH2f77W{xyt1- z;U6f`$Urs_4m<2sPN=F%iIScbKvlcdJ_w*7$V~-6p+LAZ9IS)U8YL76Z+VM36ojGX z@;S?RVr*r9JU!4e812ueQ?NOlm@#Xn>D2@KGx!Hf&%u3`rk2^Tn9Yb!B#O~QE+Yb; zqKM9N0P;crT?9sNl%ZI(fAvyCrrB-wI1v^4hlZxVc53MO$hoLyGRbJ3H3t(t|7THE zmEJ4(bSgi{s$7<<8H zwLYThnsfh={{I~~-m8}~DfmMn%&gL_&+pn%c(>sH_U!gTv)^fwIK#;4er$jK#oWMf zT(?>*;}VyWM3e;~f2FvT{jwxIL!b$PClU&TFUkXz@j&ZPEZRUsRgCdhbNSpojIn6< zsWZKQI`I0d(Z1uzB*x&W@gQ6pw(j5gR5F*#z2kApq|;8{r~{iBR91gN2d)ye^)3FK92_?B5|}@q*x-1 zv3gBYmsrf!+f}W6JAk2wo_=mmIN%kw!!%##qVia-YbL z=2{roQx=>3e=R&P6pOxv2hNKJh-kaSB@ck+pue_nJTdm+YQ;MOV45sRQ@?rFEgxM_ z=bn~JjDkxh5a}@6oG>|DP`OE!oF1KlK$(PuQcf!7($LE#kgkC<4o9$&8fUby>_`+} z|KUTUzukW*!5B}PO{Qaof7$?q_9ldOF#cA0l@q2`0hK#1C^Xm z7G^D8e=HRfnOued^gr~wUC-b7gRM{XYs!hxyemu9;U<_YHfXAbQlS8~R00v;P-+mK zwUF%77H7vwJomT1?ni&mVGQ*4B9WLtB+QV$s%1X6D2$a1kFkWAWi1e>iN;7o84gQ6#o})rza;s@9gq1&x8a z8mGC+#9`LK^h{ALo{FU=UO3zr>+L_CGD-T}ji3K`-CuWZmuFwT1Phn1#Eg0KfpQ+d zcw*=1zi#}6*O=`$*OR2{8J+ZkAUYCtFcb)H8Hz<)x$uKJ zL`<+x^o`W|KH-aW5K%u7os_ur1yxhSe;#-B!vJ~#95tKF2NbtwtFG%~ip%o{tHtsX zkv^fSs;;;^zfWgUCSBK0?R@^lKTci#!B;Y=6#9FQpuhJh#ztar`@?wXtDh&E)m-m! zdybh+mMmw?!5Om$e8EQJL4Fvbpr0^tq;ezlC_=uT(TVYA8djML$KC|}4A%d))3ZnOWn%2D;? zZU6Dz?1w({*;sU-AALs;BXay0ve_&eo2Od8dFL$_0QOS3G~Hsc#ub<6Kzw5K4q2AF z7-O7>+J|D%Z9}nWqu_)tF5Kyke~Mg7LIgPv3c(a2GSZDC#`TFDW?Tqznuxk|(oX|8 zMmj|b#e5-^PR%P83-MGswRmh|%rP=H(wNF*d!Igd=;tkq7E|QJF`PPj7-#zXL6RAt zzJ8UoX4U(qIP8unW6YIICvLV`?WZ+O`zHWR5|^F;a9ZT9+KnUhUJS3;2Tfmeo?y@AdB@ zqLE*3|I5$4Ev=7gx`u(?9`qkQf>`t{s(iJ$Yt1!_y)OIIQmNQ%v)a!(Y>vFU%DqjJ zq=f4Ivw`|>NWVEIb4 z%xgt4oj}LNhr6GA;ZTn-qfu2=WBEc(t#Z2d0hlo21^zC;-pv@>B$B^Ii2&I2w(F_$ zow;Psub=NU>Aat+EW<%t7FZzxg!O-bJRMq%#`|4G58*1EM zL1;CyELRnZg-@i?f64cWypb7z^o~3r((P?xT&M6{JB7*Z6rZ(M#1t1R`+oi9n>ug( z@#C9>TLKY#q#wTHh9zD5pS!kx+GSXb&*GkFOR+ zAtJKP^K1Q~Z+z#ezdSOfWp?UK)7pz{Hj7W*e2Zo6ve{TH-+EET76E-}VgIg?F)V0iT0CIAh* zVnV}YCMxpqsQ9sN(Hc9_CG?`T;`=K_zf%acuW}LY-~IaC70)XHU~P+&bkgT;>^yRY zY*kNYGMNg~8pX^jmf_BiUNze$b6zT!>NQQPw^{8yf1L4iob#6;0JQ;VB_bFVz*^BZ zimDjzE5{oBih0&n&JzlR0buR=MPXyE*7b|R5YL;|FA5_R2s6(4)EPDI=KHT(G;rr^ zFKxQ9jXHm_f#L`MM1{k9>8=&C2j&K=ciC-@&7nZ}+E5_e5(bgj3%EaO0ZgpP{?{(i1%;-1>rG;mo;_p|wP$vI?bq zgPcTQ-zqH9j(5Orj9*)Er@K%1Rh{8r9Yhl9Lh~ek-?6UipEo>c2(fiiX2w5wMQfv~ zf2pSZ-N#43m^2xfuyL=)`|3zM)}m_a7Xfq`MAll7ABu=)<6_xZx%LV!F#7Gn$ulff zgP3EJu=B>nNklAEgYicaF)m>k2+=p3%67)s{|FcQR?hivbzT27=lrL-u1^8MMWA{B bUH?A-dUJH+X#@DQ00000NkvXXu0mjfOf&m! diff --git a/images/popup_cancel_button.png b/images/popup_cancel_button.png deleted file mode 100644 index ac4dfe0038380f42fd1d21b547b31cb7fa51faa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4710 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 KMNUMnLSTZ5+vY?7 diff --git a/images/popup_save_button.png b/images/popup_save_button.png deleted file mode 100644 index 21c032a6d168cb20832502b2784176d58df4be96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4881 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 D6BkOJ diff --git a/images/popup_save_button_pressed.png b/images/popup_save_button_pressed.png deleted file mode 100644 index 34c094f99c4ff5729015ace36d84f700750441b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4854 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 diff --git a/js/D3.js b/js/D3.js index c8698ec..78a2d1a 100644 --- a/js/D3.js +++ b/js/D3.js @@ -24,7 +24,7 @@ var D3 = * * @var String */ - version: "0.5", + version: "0.6", /** * list all functions so we can use this while saving * @var Array @@ -137,6 +137,11 @@ var D3 = localStorage.setItem("history_content", JSON.stringify(content)); } }*/ + + if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { + D3.copyToClipboard(text); + } + switch (type) { case 'console': @@ -172,9 +177,17 @@ var D3 = var popup = window.webkitNotifications.createNotification( D3.icon, title, text); popup.show(); break; - } + } + }, + copyToClipboard: function(text) { + var bg = chrome.extension.getBackgroundPage(); + var clipboard = bg.document.getElementById("clipboard"); + clipboard.style.display = "block"; + clipboard.value = text; + clipboard.select(); + bg.document.execCommand("Copy"); + clipboard.style.display = "none"; }, - rot13decode: function(text) { var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -1218,31 +1231,23 @@ var D3 = }, - menus: [], + menus: false, menuLoadTime: 1000, createContextMenu: function() { - if(D3.menus[0]) { + if(D3.menus == true) { return; - chrome.contextMenus.removeAll(); } - - var menu = - { - "title": "Decode", - "contexts":["selection", "editable"] - }; - var idMain=chrome.contextMenus.create(menu); - D3.menus[0] = idMain; + D3.menus = true; + /** * MENU ITEM DEFINITIONS */ if(localStorage.getItem("functions_rot13") == '1') { menu = { "title" : "Rot13 Decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("rot13", D3.rot13decode(info.selectionText));} }; @@ -1253,7 +1258,6 @@ var D3 = if(localStorage.getItem("functions_timestamp") == '1') { menu = { "title" : "Unix timestamp to date conversion", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Timestamp to Date", D3.timestampToDate(info.selectionText));} }; @@ -1264,7 +1268,6 @@ var D3 = if(localStorage.getItem("functions_bin2hex") == '1') { menu = { "title" : "bin2hex", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("bin2hex", D3.bin2hex(info.selectionText));} }; @@ -1275,7 +1278,6 @@ var D3 = if(localStorage.getItem("functions_bin2txt") == '1') { menu = { "title" : "bin2txt", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("bin2txt", D3.bin2txt(info.selectionText));} }; @@ -1286,7 +1288,6 @@ var D3 = if(localStorage.getItem("functions_htmlentities") == '1') { menu = { "title" : "HTML entities", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML entities", D3.htmlentities(info.selectionText));} }; @@ -1297,7 +1298,6 @@ var D3 = if(localStorage.getItem("functions_html_entity_decode") == '1') { menu = { "title" : "HTML entity decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML entity decode", D3.html_entity_decode(info.selectionText));} }; @@ -1308,7 +1308,6 @@ var D3 = if(localStorage.getItem("functions_htmlspecialchars") == '1') { menu = { "title" : "HTML specialchars", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML specialchars", D3.htmlspecialchars(info.selectionText,2,null,true));} }; @@ -1319,7 +1318,6 @@ var D3 = if(localStorage.getItem("functions_htmlspecialchars_decode") == '1') { menu = { "title" : "HTML specialchars decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML specialchars decode", D3.htmlspecialchars_decode(info.selectionText));} }; @@ -1330,7 +1328,6 @@ var D3 = if(localStorage.getItem("functions_md5") == '1') { menu = { "title" : "MD5", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("MD5", D3.md5(info.selectionText));} }; @@ -1341,7 +1338,6 @@ var D3 = if(localStorage.getItem("functions_sha1") == '1') { menu = { "title" : "SHA1", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("SHA1", D3.sha1(info.selectionText));} }; @@ -1352,7 +1348,6 @@ var D3 = if(localStorage.getItem("functions_crc32") == '1') { menu = { "title" : "CRC32", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("CRC32", D3.crc32(info.selectionText));} }; @@ -1363,7 +1358,6 @@ var D3 = if(localStorage.getItem("functions_quoted_printable_decode") == '1') { menu = { "title" : "Quoted printable decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Quoted printable decode", D3.quoted_printable_decode(info.selectionText));} }; @@ -1374,7 +1368,6 @@ var D3 = if(localStorage.getItem("functions_quoted_printable_encode") == '1') { menu = { "title" : "Quoted printable encode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Quoted printable encode", D3.quoted_printable_encode(info.selectionText));} }; @@ -1385,7 +1378,6 @@ var D3 = if(localStorage.getItem("functions_escapeshellarg") == '1') { menu = { "title" : "Escapeshellarg", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Escapeshellarg", D3.escapeshellarg(info.selectionText));} }; @@ -1396,7 +1388,6 @@ var D3 = if(localStorage.getItem("functions_base64_encode") == '1') { menu = { "title" : "Base64 encode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Base64 encode", D3.base64_encode(info.selectionText));} }; @@ -1407,7 +1398,6 @@ var D3 = if(localStorage.getItem("functions_base64_decode") == '1') { menu = { "title" : "Base64 decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Base64 decode", D3.base64_decode(info.selectionText));} }; @@ -1418,7 +1408,6 @@ var D3 = if(localStorage.getItem("functions_unserialize") == '1') { menu = { "title" : "Unserialize", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Unserialize", D3.unserialize(info.selectionText));} }; @@ -1429,7 +1418,6 @@ var D3 = if(localStorage.getItem("functions_leet_encode") == '1') { menu = { "title" : "L33T Encode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("L33T Encode", D3.leetEncode(info.selectionText));} }; @@ -1440,7 +1428,6 @@ var D3 = if(localStorage.getItem("functions_leet_decode") == '1') { menu = { "title" : "L33T Decode", - "parentId" : idMain, "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("L33T Decode", D3.leetDecode(info.selectionText));} }; diff --git a/js/contentWorker.js b/js/contentWorker.js index 6d26914..7acfe72 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -1,9 +1,8 @@ /** - * @version 0.5 + * @version 0.6 * @author Maik Kulbe * @copyright (c) 2010 Maik Kulbe */ - D3content = { createDiv: function(title, text) diff --git a/js/menu.js b/js/menu.js index fb90e51..3034407 100644 --- a/js/menu.js +++ b/js/menu.js @@ -1,5 +1,5 @@ /** - * @version 0.5 + * @version 0.6 * @author Maik Kulbe * @copyright (c) 2010 Maik Kulbe */ @@ -11,7 +11,7 @@ var D3menu = * * @var String */ - version: "0.5", + version: "0.6", /** * list all message types so we can use this while saving * @var Array @@ -65,7 +65,10 @@ var D3menu = if(!localStorage.getItem("message_type3")) localStorage.setItem("message_type3", "0"); if(!localStorage.getItem("message_type4")) - localStorage.setItem("message_type4", "0"); + localStorage.setItem("message_type4", "0"); + + if(!localStorage.getItem("message_automatic_clipboardcopy")) + localStorage.setItem("message_automatic_clipboardcopy", "0"); D3menu.checkboxes.each(function(el){ if(localStorage.getItem(el) != "0" && localStorage.getItem(el) != "1") { @@ -94,7 +97,13 @@ var D3menu = value = $( option ).value; } }); - localStorage.setItem("message_type", value ? value : "notifications"); + localStorage.setItem("message_type", value ? value : "notifications"); + + if($("message_automatic_clipboardcopy").checked == true) { + localStorage.setItem("message_automatic_clipboardcopy", 1); + } else { + localStorage.setItem("message_automatic_clipboardcopy", 0); + } D3menu.checkboxes.each(function(option){ var elem = $( option ); @@ -117,6 +126,12 @@ var D3menu = "notifications"; var somethingChecked = false; + if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { + $("message_automatic_clipboardcopy").checked = true; + } else { + $("message_automatic_clipboardcopy").checked = false; + } + D3menu.options.each(function(option){ var optionValue = $(option).value; if(optionValue==type) { diff --git a/manifest.json b/manifest.json index 805cbe8..2d764d8 100644 --- a/manifest.json +++ b/manifest.json @@ -1,19 +1,25 @@ -{ - "name": "d3coder", - "version": "0.5.0", - "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", - "options_page": "html/menu.html", - "permissions": ["contextMenus","notifications","tabs","http://*/*"], - "background_page": "html/background.html", - "icons": { - "16": "images/icon16.png", - "48": "images/icon48.png", - "128": "images/icon128.png" }, - "content_scripts": [ - { - "matches": [""], - "css": ["styles/content.css"], - "js": ["js/mootools.js", "js/contentWorker.js"], - "all_frames": true - }] -} +{ + "name": "d3coder", + "version": "0.6.0", + "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", + "options_page": "html/menu.html", + "permissions": [ + "contextMenus", + "notifications", + "tabs", + "*://*/*", + "clipboardWrite" + ], + "background_page": "html/background.html", + "icons": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" }, + "content_scripts": [ + { + "matches": ["*://*/*"], + "css": ["styles/content.css"], + "js": ["js/mootools.js", "js/contentWorker.js"], + "all_frames": true + }] +} From 4eb820706d20c270e20fae8aa224b198e92cf37f Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Wed, 26 Oct 2011 01:22:13 +0200 Subject: [PATCH 18/61] updated copy button. needs fix --- js/contentWorker.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/contentWorker.js b/js/contentWorker.js index 7acfe72..5255d76 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -63,6 +63,12 @@ D3content = { 'text': text }); + // FIXME: finish clipboardcopy button + var infoClipboardCopy = new Element('a').set({ + 'width': 20, + 'height': 20 + }); + var hr = new Element('hr'); $(infoDiv).grab(infoHeading); From f7a71ed7628fa052dd0a4d11258a862390d45177 Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Thu, 9 Feb 2012 14:01:27 +0100 Subject: [PATCH 19/61] Added/Finished clipboard functions --- README | 2 +- html/background.html | 17 ++++++++++++++++- js/D3.js | 5 +++++ js/contentWorker.js | 33 ++++++++++++++++++++++++++++++--- styles/content.css | 5 +++++ 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/README b/README index ffe6e90..be01f7f 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ CHANGELOG 0.6.0 Added automatic clipboard funtionality -Added div-style clipbloard button +Added div-style clipboard button 0.5.0 Added function bin2txt diff --git a/html/background.html b/html/background.html index d2e6716..f39c751 100644 --- a/html/background.html +++ b/html/background.html @@ -13,7 +13,22 @@ waitInterval = setInterval( D3.createContextMenu() ,D3.menuLoadTime ); - + + chrome.extension.onRequest.addListener( + function(request, sender, sendResponse) { + console.log(sender.tab ? + "from a content script:" + sender.tab.url : + "from the extension"); + if (request.command == "doCopy") { + console.log(D3); + var responseStatus = D3.copyToClipboard(D3.lastMessage); + sendResponse({status: ["Message copied to clip board!", responseStatus] }); + } else { + sendResponse({}); // snub them. + } + }); + + diff --git a/js/D3.js b/js/D3.js index 78a2d1a..3cb7ee0 100644 --- a/js/D3.js +++ b/js/D3.js @@ -49,6 +49,8 @@ var D3 = "functions_leet_decode", "functions_leet_encode"), + lastMessage: '', + PhrasesEnglish: new Array('crap', 'dude', 'hacker', 'hacks', 'you', 'cool', 'oh my god', @@ -141,6 +143,8 @@ var D3 = if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { D3.copyToClipboard(text); } + + D3.lastMessage = text; switch (type) { case 'console': @@ -187,6 +191,7 @@ var D3 = clipboard.select(); bg.document.execCommand("Copy"); clipboard.style.display = "none"; + return true; }, rot13decode: function(text) { diff --git a/js/contentWorker.js b/js/contentWorker.js index 5255d76..f611aed 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -63,17 +63,44 @@ D3content = { 'text': text }); - // FIXME: finish clipboardcopy button var infoClipboardCopy = new Element('a').set({ - 'width': 20, - 'height': 20 + 'href': 'javascript:void', + 'text': ' ', + 'styles': { + 'width': 20, + 'height': 20, + 'background-image': 'url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAQFBgf/xAAmEAABAwQCAQMFAAAAAAAAAAABAgMEAAUGERIhYRMiMQcjY5Gz/8QAFQEBAQAAAAAAAAAAAAAAAAAABAP/xAAcEQACAQUBAAAAAAAAAAAAAAAAAQIDERIx0SL/2gAMAwEAAhEDEQA/AOnZVerjbp1rg2lmOt+cp3an0qUEpQkKOgkgk6J/XmqGdkWR2aG5NdQy+y2pBeS/FcbI2dew70OyOjvXfZq1ydfHNsS8ql/zFQ/qOtQw24FSSPez8j8go8m8Zu+uIvFK8FbfTcUpSkEDPZNjMa9ORpD0yfHejKV6TkZ7gU8hpWjo/OhVCnBIkz7Uy83x9kkcmnZnJKu99jj4pSi1EsxNN+TeNN+kgJ5rX5WdmlKUoMf/2Q==)', + 'position': 'absolute', + 'top': 0, + 'right': 0 + }, + 'title': 'Copy last conversion to clipboard', + 'id': 'D3-clipboard-button' }); var hr = new Element('hr'); $(infoDiv).grab(infoHeading); + $(infoDiv).grab(infoClipboardCopy); $(infoDiv).grab(infoText); $(infoDiv).grab(hr); + + $('D3-clipboard-button').addEvent('click', function(){ + chrome.extension.sendRequest({command: "doCopy"}, function(response) { + console.log(response); + }); + /* + var bg = chrome.extension.getBackgroundPage(); + var clipboard = bg.document.getElementById("clipboard"); + clipboard.style.display = "block"; + clipboard.value = text; + clipboard.select(); + bg.document.execCommand("Copy"); + clipboard.style.display = "none"; + */ + }); + + }, logConsole: function(text) { diff --git a/styles/content.css b/styles/content.css index fd83e7c..4b167a4 100644 --- a/styles/content.css +++ b/styles/content.css @@ -22,6 +22,7 @@ { z-index: 1100; float: right; + margin-right: 30px; } #D3-inject-heading @@ -34,6 +35,10 @@ color: black !important; } +.D3-inject-text { + word-wrap: break-word; +} + div.handle { background: #333 ; z-index: 2; From a18517f2a93f7b20974315ea4cefacde17edbc48 Mon Sep 17 00:00:00 2001 From: Maik Kulbe Date: Mon, 21 May 2012 13:10:22 +0200 Subject: [PATCH 20/61] Added in-place conversion --- README | 3 +++ html/background.html | 2 +- html/menu.html | 6 +++++- js/D3.js | 17 ++++++++++++++--- js/contentWorker.js | 21 ++++++++++++++++++++- js/menu.js | 8 +++++--- manifest.json | 2 +- styles/content.css | 2 +- styles/menu.css | 2 +- 9 files changed, 51 insertions(+), 12 deletions(-) diff --git a/README b/README index be01f7f..a837440 100644 --- a/README +++ b/README @@ -1,6 +1,9 @@ CHANGELOG ============================= +1.0.0 +Added in-place conversion + 0.6.0 Added automatic clipboard funtionality Added div-style clipboard button diff --git a/html/background.html b/html/background.html index f39c751..3e8ad30 100644 --- a/html/background.html +++ b/html/background.html @@ -2,7 +2,7 @@ diff --git a/html/menu.html b/html/menu.html index 3cc0fb1..d911651 100644 --- a/html/menu.html +++ b/html/menu.html @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/js/background.js b/js/background.js new file mode 100644 index 0000000..ac26ab9 --- /dev/null +++ b/js/background.js @@ -0,0 +1,19 @@ +D3.checkInstall(); +waitInterval = window.setInterval( + function(){ D3.createContextMenu() }, + D3.menuLoadTime +); + +chrome.extension.onRequest.addListener( + function(request, sender, sendResponse) { + console.log(sender.tab ? + "from a content script:" + sender.tab.url : + "from the extension"); + if (request.command == "doCopy") { + console.log(D3); + var responseStatus = D3.copyToClipboard(D3.lastMessage); + sendResponse({status: ["Message copied to clip board!", responseStatus] }); + } else { + sendResponse({}); // snub them. + } +}); diff --git a/manifest.json b/manifest.json index 3c520ed..4bc894a 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,7 @@ { + "manifest_version": 2, "name": "d3coder", - "version": "1.0.0", + "version": "1.1.0", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ @@ -10,7 +11,9 @@ "*://*/*", "clipboardWrite" ], - "background_page": "html/background.html", + "background": { + "page": "html/background.html" + }, "icons": { "16": "images/icon16.png", "48": "images/icon48.png", From b795f0055819c47f58052bf55501851c4014f8a9 Mon Sep 17 00:00:00 2001 From: MKzero Date: Wed, 26 Sep 2012 13:38:19 +0200 Subject: [PATCH 23/61] Added string reverse feature. Solves #1 --- html/menu.html | 8 ++++++-- js/D3.js | 16 +++++++++++++++- js/menu.js | 5 +++-- manifest.json | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/html/menu.html b/html/menu.html index d911651..9d9fbb9 100644 --- a/html/menu.html +++ b/html/menu.html @@ -124,7 +124,11 @@

Activate Functions:

-
+ +
+ + +
+
+ + +
+
+ + +
diff --git a/js/D3.js b/js/D3.js index 27c80ed..60d7f72 100644 --- a/js/D3.js +++ b/js/D3.js @@ -38,6 +38,8 @@ var D3 = "functions_htmlentities", "functions_htmlspecialchars", "functions_htmlspecialchars_decode", + "functions_uri_encode", + "functions_uri_decode", "functions_md5", "functions_sha1", "functions_quoted_printable_decode", @@ -423,7 +425,13 @@ var D3 = return string; }, - md5: function (str) { + uri_encode: function (str) { + return encodeURIComponent(str); + }, + uri_decode: function (str) { + return decodeURIComponent(str); + }, + md5: function (str) { var xl; var rotateLeft = function (lValue, iShiftBits) { @@ -1313,6 +1321,26 @@ var D3 = var idBin2txt=chrome.contextMenus.create(menu); } + + if(localStorage.getItem("functions_uri_encode") == '1') { + menu = { + "title" : "URI encode", + "contexts" : ["selection", "editable"], + "onclick" : function(info, tab){D3.createPopup("URI encode", D3.uri_encode(info.selectionText));} + }; + + var idURIEncode=chrome.contextMenus.create(menu); + } + + if(localStorage.getItem("functions_uri_decode") == '1') { + menu = { + "title" : "URI decode", + "contexts" : ["selection", "editable"], + "onclick" : function(info, tab){D3.createPopup("URI decode", D3.uri_decode(info.selectionText));} + }; + + var idURIDecode=chrome.contextMenus.create(menu); + } if(localStorage.getItem("functions_htmlentities") == '1') { menu = { @@ -1473,5 +1501,14 @@ var D3 = var idReverseText=chrome.contextMenus.create(menu); } + + // Menu item for options + menu = { + "title" : "d3coder options", + "contexts" : ["all"], + "onclick" : function(info, tab) {chrome.tabs.create({url:"html/menu.html"});} + } + + var idDecoderOptions=chrome.contextMenus.create(menu); } }; diff --git a/js/menu.js b/js/menu.js index 48efcd9..ae5d8f0 100644 --- a/js/menu.js +++ b/js/menu.js @@ -30,6 +30,8 @@ var D3menu = "functions_htmlentities", "functions_htmlspecialchars", "functions_htmlspecialchars_decode", + "functions_uri_encode", + "functions_uri_decode", "functions_md5", "functions_sha1", "functions_quoted_printable_decode", diff --git a/manifest.json b/manifest.json index 902c822..741b7aa 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.2.2", + "version": "1.2.3", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ From 1fbb3260134eefddbe8dfd2fe683e8ef1b980d4f Mon Sep 17 00:00:00 2001 From: MKzero Date: Thu, 6 Dec 2012 12:42:18 +0100 Subject: [PATCH 27/61] Fixed packaging issues --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 741b7aa..cc65dc7 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.2.3", + "version": "1.2.5", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ From 3c26d5ae74ed900839b05dd6aa465c1529f6b703 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 11:48:24 -0700 Subject: [PATCH 28/61] Updated README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index ddae375..771e84b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ CHANGELOG ============================= +1.2.4 +1.2.5 +Packaging problems + 1.2.3 Added function URI encode Added function URI decode From 66553b640bf045fbdf750b35c443c0d1ed1e7e46 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 12:41:55 -0700 Subject: [PATCH 29/61] Fix for broken save function in functions list (BUG #8) --- js/menu.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/js/menu.js b/js/menu.js index ae5d8f0..ce9ce66 100644 --- a/js/menu.js +++ b/js/menu.js @@ -93,6 +93,7 @@ var D3menu = * Save options to localStorage */ save_options: function(alertText) { + console.log("Called save_options"); if(alertText == undefined) { alert = true; } @@ -109,15 +110,18 @@ var D3menu = } else { localStorage.setItem("message_automatic_clipboardcopy", 0); } - + + console.log('Updating functions'); D3menu.checkboxes.each(function(option){ var elem = $( option ); + console.log(elem); var value = "0"; - if(elem.checked) + if(elem.checked) { value = elem.checked ? "1" : "0"; - else if(elem.value) - value = elem.value=="on" ? "1" : "0"; - + } else { + value = "0"; + } + localStorage.setItem(option, value); }); }, From 9cb8c27342aa58d978386f77edce5b0312e58d49 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 18:57:14 -0700 Subject: [PATCH 30/61] Fix for fixed context menu (BUG #8) --- js/D3.js | 272 ++++++++++++++++++++++++++++++++++++++--------------- js/menu.js | 3 +- 2 files changed, 197 insertions(+), 78 deletions(-) diff --git a/js/D3.js b/js/D3.js index 60d7f72..bad90a9 100644 --- a/js/D3.js +++ b/js/D3.js @@ -52,6 +52,8 @@ var D3 = "functions_leet_encode", "functions_reverse"), + menuIds: {}, + lastMessage: '', PhrasesEnglish: @@ -1273,242 +1275,358 @@ var D3 = menuLoadTime: 1000, createContextMenu: function() { - if(D3.menus == true) { - return; - } + var changed = false; - D3.menus = true; + D3.menus = true; - /** - * MENU ITEM DEFINITIONS + /** + * MENU ITEM DEFINITIONS */ - if(localStorage.getItem("functions_rot13") == '1') { + console.log(D3.menuIds); + if(localStorage.getItem("functions_rot13") == '1' && !D3.menuIds['rot13']) { menu = { "title" : "Rot13 Decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("rot13", D3.rot13decode(info.selectionText));} }; - - var idRot13=chrome.contextMenus.create(menu); - } - - if(localStorage.getItem("functions_timestamp") == '1') { + + D3.menuIds['rot13']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_rot13") == '0' && D3.menuIds['rot13']) { + console.log(D3.menuIds['rot13']); + chrome.contextMenus.remove(D3.menuIds['rot13']); + D3.menuIds['rot13'] == null; + } + + if(localStorage.getItem("functions_timestamp") == '1' && !D3.menuIds['timestamp']) { menu = { "title" : "Unix timestamp to date conversion", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Timestamp to Date", D3.timestampToDate(info.selectionText));} }; - var idTimestamp=chrome.contextMenus.create(menu); - } + D3.menuIds['timestamp']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_timestamp") == '0' && D3.menuIds['timestamp']) { + console.log(D3.menuIds['timestamp']); + chrome.contextMenus.remove(D3.menuIds['timestamp']); + D3.menuIds['timestamp'] == null; + } - if(localStorage.getItem("functions_bin2hex") == '1') { + if(localStorage.getItem("functions_bin2hex") == '1' && !D3.menuIds['bin2hex']) { menu = { "title" : "bin2hex", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("bin2hex", D3.bin2hex(info.selectionText));} }; - var idBin2hex=chrome.contextMenus.create(menu); - } + D3.menuIds['bin2hex']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_bin2hex") == '0' && D3.menuIds['bin2hex']) { + console.log(D3.menuIds['bin2hex']); + chrome.contextMenus.remove(D3.menuIds['bin2hex']); + D3.menuIds['bin2hex'] == null; + } - if(localStorage.getItem("functions_bin2txt") == '1') { + if(localStorage.getItem("functions_bin2txt") == '1' && !D3.menuIds['bin2txt']) { menu = { "title" : "bin2txt", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("bin2txt", D3.bin2txt(info.selectionText));} }; - var idBin2txt=chrome.contextMenus.create(menu); - } + D3.menuIds['bin2txt']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_bin2txt") == '0' && D3.menuIds['bin2txt']) { + console.log(D3.menuIds['bin2txt']); + chrome.contextMenus.remove(D3.menuIds['bin2txt']); + D3.menuIds['bin2txt'] == null; + } - if(localStorage.getItem("functions_uri_encode") == '1') { + if(localStorage.getItem("functions_uri_encode") == '1' && !D3.menuIds['uri_encode']) { menu = { "title" : "URI encode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("URI encode", D3.uri_encode(info.selectionText));} }; - var idURIEncode=chrome.contextMenus.create(menu); - } + D3.menuIds['uri_encode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_uri_encode") == '0' && D3.menuIds['uri_encode']) { + console.log(D3.menuIds['uri_encode']); + chrome.contextMenus.remove(D3.menuIds['uri_encode']); + D3.menuIds['uri_encode'] == null; + } - if(localStorage.getItem("functions_uri_decode") == '1') { + if(localStorage.getItem("functions_uri_decode") == '1' && !D3.menuIds['uri_decode']) { menu = { "title" : "URI decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("URI decode", D3.uri_decode(info.selectionText));} }; - var idURIDecode=chrome.contextMenus.create(menu); - } + D3.menuIds['uri_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_uri_decode") == '0' && D3.menuIds['uri_decode']) { + console.log(D3.menuIds['uri_decode']); + chrome.contextMenus.remove(D3.menuIds['uri_decode']); + D3.menuIds['uri_decode'] == null; + } - if(localStorage.getItem("functions_htmlentities") == '1') { + if(localStorage.getItem("functions_htmlentities") == '1' && !D3.menuIds['htmlentities']) { menu = { "title" : "HTML entities", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML entities", D3.htmlentities(info.selectionText));} }; - var idHtmlEntities=chrome.contextMenus.create(menu); - } + D3.menuIds['htmlentities']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_htmlentities") == '0' && D3.menuIds['htmlentities']) { + console.log(D3.menuIds['htmlentities']); + chrome.contextMenus.remove(D3.menuIds['htmlentities']); + D3.menuIds['htmlentities'] == null; + } - if(localStorage.getItem("functions_html_entity_decode") == '1') { + if(localStorage.getItem("functions_html_entity_decode") == '1' && !D3.menuIds['html_entity_decode']) { menu = { "title" : "HTML entity decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML entity decode", D3.html_entity_decode(info.selectionText));} }; - var idHtmlentitiedecode=chrome.contextMenus.create(menu); - } + D3.menuIds['html_entity_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_html_entity_decode") == '0' && D3.menuIds['html_entity_decode']) { + console.log(D3.menuIds['html_entity_decode']); + chrome.contextMenus.remove(D3.menuIds['html_entity_decode']); + D3.menuIds['html_entity_decode'] == null; + } - if(localStorage.getItem("functions_htmlspecialchars") == '1') { + if(localStorage.getItem("functions_htmlspecialchars") == '1' && !D3.menuIds['htmlspecialchars']) { menu = { "title" : "HTML specialchars", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML specialchars", D3.htmlspecialchars(info.selectionText,2,null,true));} }; - var idHtmlspecialchars=chrome.contextMenus.create(menu); - } + D3.menuIds['htmlspecialchars']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_htmlspecialchars") == '0' && D3.menuIds['htmlspecialchars']) { + console.log(D3.menuIds['htmlspecialchars']); + chrome.contextMenus.remove(D3.menuIds['htmlspecialchars']); + D3.menuIds['htmlspecialchars'] == null; + } - if(localStorage.getItem("functions_htmlspecialchars_decode") == '1') { + if(localStorage.getItem("functions_htmlspecialchars_decode") == '1' && !D3.menuIds['htmlspecialchars_decode']) { menu = { "title" : "HTML specialchars decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("HTML specialchars decode", D3.htmlspecialchars_decode(info.selectionText));} }; - var idHtmlspecialchardecode=chrome.contextMenus.create(menu); - } + D3.menuIds['htmlspecialchars_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_htmlspecialchars_decode") == '0' && D3.menuIds['htmlspecialchars_decode']) { + console.log(D3.menuIds['htmlspecialchars_decode']); + chrome.contextMenus.remove(D3.menuIds['htmlspecialchars_decode']); + D3.menuIds['htmlspecialchars_decode'] == null; + } - if(localStorage.getItem("functions_md5") == '1') { + if(localStorage.getItem("functions_md5") == '1' && !D3.menuIds['md5']) { menu = { "title" : "MD5", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("MD5", D3.md5(info.selectionText));} }; - var idMd5=chrome.contextMenus.create(menu); - } + D3.menuIds['md5']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_md5") == '0' && D3.menuIds['md5']) { + console.log(D3.menuIds['md5']); + chrome.contextMenus.remove(D3.menuIds['md5']); + D3.menuIds['md5'] == null; + } - if(localStorage.getItem("functions_sha1") == '1') { + if(localStorage.getItem("functions_sha1") == '1' && !D3.menuIds['sha1']) { menu = { "title" : "SHA1", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("SHA1", D3.sha1(info.selectionText));} }; - var idSha1=chrome.contextMenus.create(menu); - } + D3.menuIds['sha1']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_sha1") == '0' && D3.menuIds['sha1']) { + console.log(D3.menuIds['sha1']); + chrome.contextMenus.remove(D3.menuIds['sha1']); + D3.menuIds['sha1'] == null; + } - if(localStorage.getItem("functions_crc32") == '1') { + if(localStorage.getItem("functions_crc32") == '1' && !D3.menuIds['crc32']) { menu = { "title" : "CRC32", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("CRC32", D3.crc32(info.selectionText));} }; - var idCrc32=chrome.contextMenus.create(menu); - } + D3.menuIds['crc32']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_crc32") == '0' && D3.menuIds['crc32']) { + console.log(D3.menuIds['crc32']); + chrome.contextMenus.remove(D3.menuIds['crc32']); + D3.menuIds['crc32'] == null; + } - if(localStorage.getItem("functions_quoted_printable_decode") == '1') { + if(localStorage.getItem("functions_quoted_printable_decode") == '1' && !D3.menuIds['quoted_printable_decode']) { menu = { "title" : "Quoted printable decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Quoted printable decode", D3.quoted_printable_decode(info.selectionText));} }; - var idQuotetprintabledecode=chrome.contextMenus.create(menu); - } + D3.menuIds['quoted_printable_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_quoted_printable_decode") == '0' && D3.menuIds['quoted_printable_decode']) { + console.log(D3.menuIds['quoted_printable_decode']); + chrome.contextMenus.remove(D3.menuIds['quoted_printable_decode']); + D3.menuIds['quoted_printable_decode'] == null; + } - if(localStorage.getItem("functions_quoted_printable_encode") == '1') { + if(localStorage.getItem("functions_quoted_printable_encode") == '1' && !D3.menuIds['quoted_printable_encode']) { menu = { "title" : "Quoted printable encode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Quoted printable encode", D3.quoted_printable_encode(info.selectionText));} }; - var idQuotetprintableencode=chrome.contextMenus.create(menu); - } + D3.menuIds['quoted_printable_encode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_quoted_printable_encode") == '0' && D3.menuIds['quoted_printable_encode']) { + console.log(D3.menuIds['quoted_printable_encode']); + chrome.contextMenus.remove(D3.menuIds['quoted_printable_encode']); + D3.menuIds['quoted_printable_encode'] == null; + } - if(localStorage.getItem("functions_escapeshellarg") == '1') { + if(localStorage.getItem("functions_escapeshellarg") == '1' && !D3.menuIds['escapeshellarg']) { menu = { "title" : "Escapeshellarg", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Escapeshellarg", D3.escapeshellarg(info.selectionText));} }; - var idEscapeshellarg=chrome.contextMenus.create(menu); - } + D3.menuIds['escapeshellarg']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_escapeshellarg") == '0' && D3.menuIds['escapeshellarg']) { + console.log(D3.menuIds['escapeshellarg']); + chrome.contextMenus.remove(D3.menuIds['escapeshellarg']); + D3.menuIds['escapeshellarg'] == null; + } - if(localStorage.getItem("functions_base64_encode") == '1') { + if(localStorage.getItem("functions_base64_encode") == '1' && !D3.menuIds['base64_encode']) { menu = { "title" : "Base64 encode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Base64 encode", D3.base64_encode(info.selectionText));} }; - var idBase64encode=chrome.contextMenus.create(menu); - } + D3.menuIds['base64_encode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_base64_encode") == '0' && D3.menuIds['base64_encode']) { + console.log(D3.menuIds['base64_encode']); + chrome.contextMenus.remove(D3.menuIds['base64_encode']); + D3.menuIds['base64_encode'] == null; + } - if(localStorage.getItem("functions_base64_decode") == '1') { + if(localStorage.getItem("functions_base64_decode") == '1' && !D3.menuIds['base64_decode']) { menu = { "title" : "Base64 decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Base64 decode", D3.base64_decode(info.selectionText));} }; - var idBase64decode=chrome.contextMenus.create(menu); - } + D3.menuIds['base64_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_base64_decode") == '0' && D3.menuIds['base64_decode']) { + console.log(D3.menuIds['base64_decode']); + chrome.contextMenus.remove(D3.menuIds['base64_decode']); + D3.menuIds['base64_decode'] == null; + } - if(localStorage.getItem("functions_unserialize") == '1') { + if(localStorage.getItem("functions_unserialize") == '1' && !D3.menuIds['unserialize']) { menu = { "title" : "Unserialize", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("Unserialize", D3.unserialize(info.selectionText));} }; - var idBase64decode=chrome.contextMenus.create(menu); + D3.menuIds['unserialize']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_unserialize") == '0' && D3.menuIds['unserialize']) { + console.log(D3.menuIds['unserialize']); + chrome.contextMenus.remove(D3.menuIds['unserialize']); + D3.menuIds['unserialize'] == null; } - if(localStorage.getItem("functions_leet_encode") == '1') { + if(localStorage.getItem("functions_leet_encode") == '1' && !D3.menuIds['leet_encode']) { menu = { "title" : "L33T Encode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("L33T Encode", D3.leetEncode(info.selectionText));} }; - var idLeetEncode=chrome.contextMenus.create(menu); + D3.menuIds['leet_encode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_leet_encode") == '0' && D3.menuIds['leet_encode']) { + console.log(D3.menuIds['leet_encode']); + chrome.contextMenus.remove(D3.menuIds['leet_encode']); + D3.menuIds['leet_encode'] == null; } - if(localStorage.getItem("functions_leet_decode") == '1') { + if(localStorage.getItem("functions_leet_decode") == '1' && !D3.menuIds['leet_decode']) { menu = { "title" : "L33T Decode", "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup("L33T Decode", D3.leetDecode(info.selectionText));} }; - var idLeetDecode=chrome.contextMenus.create(menu); + D3.menuIds['leet_decode']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_leet_decode") == '0' && D3.menuIds['leet_decode']) { + console.log(D3.menuIds['leet_decode']); + chrome.contextMenus.remove(D3.menuIds['leet_decode']); + D3.menuIds['leet_decode'] == null; } - if(localStorage.getItem("functions_reverse") == '1') { + if(localStorage.getItem("functions_reverse") == '1' && !D3.menuIds['reverse']) { menu = { "title" : "Reverse text", "contexts" : ["selection", "editable"], "onclick" : function(info, tab) {D3.createPopup("Reverse", D3.reverseText(info.selectionText));} }; - var idReverseText=chrome.contextMenus.create(menu); + D3.menuIds['reverse']=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_reverse") == '0' && D3.menuIds['reverse']) { + console.log(D3.menuIds['reverse']); + chrome.contextMenus.remove(D3.menuIds['reverse']); + D3.menuIds['reverse'] == null; } - // Menu item for options - menu = { - "title" : "d3coder options", - "contexts" : ["all"], - "onclick" : function(info, tab) {chrome.tabs.create({url:"html/menu.html"});} - } + if (changed === true && D3.menuIds["options"]) { + chrome.contextMenus.remove(D3.menuIds['options']); + D3.menuIds["options"] = null; + } + + if (!D3.menuIds["options"]) { + // Menu item for options + menu = { + "title" : "d3coder options", + "contexts" : ["all"], + "onclick" : function(info, tab) {chrome.tabs.create({url:"html/menu.html"});} + } - var idDecoderOptions=chrome.contextMenus.create(menu); + D3.menuIds["options"]=chrome.contextMenus.create(menu); + } } }; diff --git a/js/menu.js b/js/menu.js index ce9ce66..e872909 100644 --- a/js/menu.js +++ b/js/menu.js @@ -114,7 +114,6 @@ var D3menu = console.log('Updating functions'); D3menu.checkboxes.each(function(option){ var elem = $( option ); - console.log(elem); var value = "0"; if(elem.checked) { value = elem.checked ? "1" : "0"; @@ -124,6 +123,8 @@ var D3menu = localStorage.setItem(option, value); }); + + console.log(localStorage); }, /** From d105677effb1a0053eba8d5cebae6ff6e2233a41 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 18:58:54 -0700 Subject: [PATCH 31/61] Updated README, manifest --- README.md | 5 ++++- manifest.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 771e84b..4ad6938 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ CHANGELOG ============================= -1.2.4 +1.2.6 +Fix for broken context menu customization + 1.2.5 +1.2.4 Packaging problems 1.2.3 diff --git a/manifest.json b/manifest.json index cc65dc7..1df6ca0 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.2.5", + "version": "1.2.6", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ From ed8a5e2cb10ba2e6e006f6655019f4fcafc98759 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 21:30:37 -0700 Subject: [PATCH 32/61] Code cleanup for context menu creation --- js/D3.js | 372 ++------------ js/D3.js~ | 1342 ++++++++++++++++++++++++++++++++++++++++++++++++ manifest.json | 5 +- manifest.json~ | 29 ++ 4 files changed, 1415 insertions(+), 333 deletions(-) create mode 100644 js/D3.js~ create mode 100644 manifest.json~ diff --git a/js/D3.js b/js/D3.js index bad90a9..e06d3aa 100644 --- a/js/D3.js +++ b/js/D3.js @@ -1275,343 +1275,53 @@ var D3 = menuLoadTime: 1000, createContextMenu: function() { - var changed = false; + var changed = false, + createMenu = function(name, info, ptFunction) { + var menu; + + if(localStorage.getItem("functions_" + name) == '1' && !D3.menuIds[name]) { + menu = { + "title" : info, + "contexts" : ["selection", "editable"], + "onclick" : function(info, tab){D3.createPopup(info, ptFunction(info.selectionText));} + }; + + D3.menuIds[name]=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_" + name) == '0' && D3.menuIds[name]) { + console.log(D3.menuIds[name]); + chrome.contextMenus.remove(D3.menuIds[name]); + D3.menuIds[name] = null; + } + }; D3.menus = true; /** * MENU ITEM DEFINITIONS */ - console.log(D3.menuIds); - if(localStorage.getItem("functions_rot13") == '1' && !D3.menuIds['rot13']) { - menu = { - "title" : "Rot13 Decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("rot13", D3.rot13decode(info.selectionText));} - }; - - D3.menuIds['rot13']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_rot13") == '0' && D3.menuIds['rot13']) { - console.log(D3.menuIds['rot13']); - chrome.contextMenus.remove(D3.menuIds['rot13']); - D3.menuIds['rot13'] == null; - } - - if(localStorage.getItem("functions_timestamp") == '1' && !D3.menuIds['timestamp']) { - menu = { - "title" : "Unix timestamp to date conversion", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Timestamp to Date", D3.timestampToDate(info.selectionText));} - }; - - D3.menuIds['timestamp']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_timestamp") == '0' && D3.menuIds['timestamp']) { - console.log(D3.menuIds['timestamp']); - chrome.contextMenus.remove(D3.menuIds['timestamp']); - D3.menuIds['timestamp'] == null; - } - - if(localStorage.getItem("functions_bin2hex") == '1' && !D3.menuIds['bin2hex']) { - menu = { - "title" : "bin2hex", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("bin2hex", D3.bin2hex(info.selectionText));} - }; - - D3.menuIds['bin2hex']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_bin2hex") == '0' && D3.menuIds['bin2hex']) { - console.log(D3.menuIds['bin2hex']); - chrome.contextMenus.remove(D3.menuIds['bin2hex']); - D3.menuIds['bin2hex'] == null; - } - - if(localStorage.getItem("functions_bin2txt") == '1' && !D3.menuIds['bin2txt']) { - menu = { - "title" : "bin2txt", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("bin2txt", D3.bin2txt(info.selectionText));} - }; - - D3.menuIds['bin2txt']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_bin2txt") == '0' && D3.menuIds['bin2txt']) { - console.log(D3.menuIds['bin2txt']); - chrome.contextMenus.remove(D3.menuIds['bin2txt']); - D3.menuIds['bin2txt'] == null; - } - - if(localStorage.getItem("functions_uri_encode") == '1' && !D3.menuIds['uri_encode']) { - menu = { - "title" : "URI encode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("URI encode", D3.uri_encode(info.selectionText));} - }; - - D3.menuIds['uri_encode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_uri_encode") == '0' && D3.menuIds['uri_encode']) { - console.log(D3.menuIds['uri_encode']); - chrome.contextMenus.remove(D3.menuIds['uri_encode']); - D3.menuIds['uri_encode'] == null; - } - - if(localStorage.getItem("functions_uri_decode") == '1' && !D3.menuIds['uri_decode']) { - menu = { - "title" : "URI decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("URI decode", D3.uri_decode(info.selectionText));} - }; - - D3.menuIds['uri_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_uri_decode") == '0' && D3.menuIds['uri_decode']) { - console.log(D3.menuIds['uri_decode']); - chrome.contextMenus.remove(D3.menuIds['uri_decode']); - D3.menuIds['uri_decode'] == null; - } - - if(localStorage.getItem("functions_htmlentities") == '1' && !D3.menuIds['htmlentities']) { - menu = { - "title" : "HTML entities", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("HTML entities", D3.htmlentities(info.selectionText));} - }; - - D3.menuIds['htmlentities']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_htmlentities") == '0' && D3.menuIds['htmlentities']) { - console.log(D3.menuIds['htmlentities']); - chrome.contextMenus.remove(D3.menuIds['htmlentities']); - D3.menuIds['htmlentities'] == null; - } - - if(localStorage.getItem("functions_html_entity_decode") == '1' && !D3.menuIds['html_entity_decode']) { - menu = { - "title" : "HTML entity decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("HTML entity decode", D3.html_entity_decode(info.selectionText));} - }; - - D3.menuIds['html_entity_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_html_entity_decode") == '0' && D3.menuIds['html_entity_decode']) { - console.log(D3.menuIds['html_entity_decode']); - chrome.contextMenus.remove(D3.menuIds['html_entity_decode']); - D3.menuIds['html_entity_decode'] == null; - } - - if(localStorage.getItem("functions_htmlspecialchars") == '1' && !D3.menuIds['htmlspecialchars']) { - menu = { - "title" : "HTML specialchars", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("HTML specialchars", D3.htmlspecialchars(info.selectionText,2,null,true));} - }; - - D3.menuIds['htmlspecialchars']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_htmlspecialchars") == '0' && D3.menuIds['htmlspecialchars']) { - console.log(D3.menuIds['htmlspecialchars']); - chrome.contextMenus.remove(D3.menuIds['htmlspecialchars']); - D3.menuIds['htmlspecialchars'] == null; - } - - if(localStorage.getItem("functions_htmlspecialchars_decode") == '1' && !D3.menuIds['htmlspecialchars_decode']) { - menu = { - "title" : "HTML specialchars decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("HTML specialchars decode", D3.htmlspecialchars_decode(info.selectionText));} - }; - - D3.menuIds['htmlspecialchars_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_htmlspecialchars_decode") == '0' && D3.menuIds['htmlspecialchars_decode']) { - console.log(D3.menuIds['htmlspecialchars_decode']); - chrome.contextMenus.remove(D3.menuIds['htmlspecialchars_decode']); - D3.menuIds['htmlspecialchars_decode'] == null; - } - - if(localStorage.getItem("functions_md5") == '1' && !D3.menuIds['md5']) { - menu = { - "title" : "MD5", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("MD5", D3.md5(info.selectionText));} - }; - - D3.menuIds['md5']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_md5") == '0' && D3.menuIds['md5']) { - console.log(D3.menuIds['md5']); - chrome.contextMenus.remove(D3.menuIds['md5']); - D3.menuIds['md5'] == null; - } - - if(localStorage.getItem("functions_sha1") == '1' && !D3.menuIds['sha1']) { - menu = { - "title" : "SHA1", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("SHA1", D3.sha1(info.selectionText));} - }; - - D3.menuIds['sha1']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_sha1") == '0' && D3.menuIds['sha1']) { - console.log(D3.menuIds['sha1']); - chrome.contextMenus.remove(D3.menuIds['sha1']); - D3.menuIds['sha1'] == null; - } - - if(localStorage.getItem("functions_crc32") == '1' && !D3.menuIds['crc32']) { - menu = { - "title" : "CRC32", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("CRC32", D3.crc32(info.selectionText));} - }; - - D3.menuIds['crc32']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_crc32") == '0' && D3.menuIds['crc32']) { - console.log(D3.menuIds['crc32']); - chrome.contextMenus.remove(D3.menuIds['crc32']); - D3.menuIds['crc32'] == null; - } - - if(localStorage.getItem("functions_quoted_printable_decode") == '1' && !D3.menuIds['quoted_printable_decode']) { - menu = { - "title" : "Quoted printable decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Quoted printable decode", D3.quoted_printable_decode(info.selectionText));} - }; - - D3.menuIds['quoted_printable_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_quoted_printable_decode") == '0' && D3.menuIds['quoted_printable_decode']) { - console.log(D3.menuIds['quoted_printable_decode']); - chrome.contextMenus.remove(D3.menuIds['quoted_printable_decode']); - D3.menuIds['quoted_printable_decode'] == null; - } - - if(localStorage.getItem("functions_quoted_printable_encode") == '1' && !D3.menuIds['quoted_printable_encode']) { - menu = { - "title" : "Quoted printable encode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Quoted printable encode", D3.quoted_printable_encode(info.selectionText));} - }; - - D3.menuIds['quoted_printable_encode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_quoted_printable_encode") == '0' && D3.menuIds['quoted_printable_encode']) { - console.log(D3.menuIds['quoted_printable_encode']); - chrome.contextMenus.remove(D3.menuIds['quoted_printable_encode']); - D3.menuIds['quoted_printable_encode'] == null; - } - - if(localStorage.getItem("functions_escapeshellarg") == '1' && !D3.menuIds['escapeshellarg']) { - menu = { - "title" : "Escapeshellarg", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Escapeshellarg", D3.escapeshellarg(info.selectionText));} - }; - - D3.menuIds['escapeshellarg']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_escapeshellarg") == '0' && D3.menuIds['escapeshellarg']) { - console.log(D3.menuIds['escapeshellarg']); - chrome.contextMenus.remove(D3.menuIds['escapeshellarg']); - D3.menuIds['escapeshellarg'] == null; - } - - if(localStorage.getItem("functions_base64_encode") == '1' && !D3.menuIds['base64_encode']) { - menu = { - "title" : "Base64 encode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Base64 encode", D3.base64_encode(info.selectionText));} - }; - - D3.menuIds['base64_encode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_base64_encode") == '0' && D3.menuIds['base64_encode']) { - console.log(D3.menuIds['base64_encode']); - chrome.contextMenus.remove(D3.menuIds['base64_encode']); - D3.menuIds['base64_encode'] == null; - } - - if(localStorage.getItem("functions_base64_decode") == '1' && !D3.menuIds['base64_decode']) { - menu = { - "title" : "Base64 decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Base64 decode", D3.base64_decode(info.selectionText));} - }; - - D3.menuIds['base64_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_base64_decode") == '0' && D3.menuIds['base64_decode']) { - console.log(D3.menuIds['base64_decode']); - chrome.contextMenus.remove(D3.menuIds['base64_decode']); - D3.menuIds['base64_decode'] == null; - } - - if(localStorage.getItem("functions_unserialize") == '1' && !D3.menuIds['unserialize']) { - menu = { - "title" : "Unserialize", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("Unserialize", D3.unserialize(info.selectionText));} - }; - - D3.menuIds['unserialize']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_unserialize") == '0' && D3.menuIds['unserialize']) { - console.log(D3.menuIds['unserialize']); - chrome.contextMenus.remove(D3.menuIds['unserialize']); - D3.menuIds['unserialize'] == null; - } - - if(localStorage.getItem("functions_leet_encode") == '1' && !D3.menuIds['leet_encode']) { - menu = { - "title" : "L33T Encode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("L33T Encode", D3.leetEncode(info.selectionText));} - }; - - D3.menuIds['leet_encode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_leet_encode") == '0' && D3.menuIds['leet_encode']) { - console.log(D3.menuIds['leet_encode']); - chrome.contextMenus.remove(D3.menuIds['leet_encode']); - D3.menuIds['leet_encode'] == null; - } - - if(localStorage.getItem("functions_leet_decode") == '1' && !D3.menuIds['leet_decode']) { - menu = { - "title" : "L33T Decode", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup("L33T Decode", D3.leetDecode(info.selectionText));} - }; - - D3.menuIds['leet_decode']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_leet_decode") == '0' && D3.menuIds['leet_decode']) { - console.log(D3.menuIds['leet_decode']); - chrome.contextMenus.remove(D3.menuIds['leet_decode']); - D3.menuIds['leet_decode'] == null; - } - - if(localStorage.getItem("functions_reverse") == '1' && !D3.menuIds['reverse']) { - menu = { - "title" : "Reverse text", - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab) {D3.createPopup("Reverse", D3.reverseText(info.selectionText));} - }; - - D3.menuIds['reverse']=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_reverse") == '0' && D3.menuIds['reverse']) { - console.log(D3.menuIds['reverse']); - chrome.contextMenus.remove(D3.menuIds['reverse']); - D3.menuIds['reverse'] == null; - } + createMenu('rot13', 'Rot13 Decode', D3.rot13decode); + createMenu('timestamp', 'Unix timestamp to date conversion', D3.timestampToDate); + createMenu('bin2hex', 'bin2hex', D3.bin2hex); + createMenu('bin2txt', 'bin2txt', D3.bin2txt); + createMenu('uri_encode', 'URI encode', D3.uri_encode); + createMenu('uri_decode', 'URI decode', D3.uri_decode); + createMenu('htmlentities', 'HTML entities', D3.htmlentities); + createMenu('html_entity_decode', 'HTML entity decode', D3.html_entity_decode); + createMenu('htmlspecialchars', 'HTML specialchars', D3.htmlspecialchars); + createMenu('htmlspecialchars_decode', 'HTML specialchars decode', D3.htmlspecialchars_decode); + createMenu('md5', 'MD5', D3.md5); + createMenu('sha1', 'SHA1', D3.sha1); + createMenu('crc32', 'CRC32', D3.crc32); + createMenu('quoted_printable_decode', 'Quoted printable decode', D3.quoted_printable_decode); + createMenu('quoted_printable_encode', 'Quoted printable encode', D3.quoted_printable_encode); + createMenu('escapeshellarg', 'Escapeshellarg', D3.escapeshellarg); + createMenu('base64_encode', 'Base64 encode', D3.base64_encode); + createMenu('base64_decode', 'Base64 decode', D3.base64_decode); + createMenu('unserialize', 'Unserialize', D3.unserialize); + createMenu('leet_encode', 'L33T Encode', D3.leetEncode); + createMenu('leet_decode', 'L33T Decode', D3.leetDecode); + createMenu('reverse', 'Reverse text', D3.reverseText); if (changed === true && D3.menuIds["options"]) { chrome.contextMenus.remove(D3.menuIds['options']); diff --git a/js/D3.js~ b/js/D3.js~ new file mode 100644 index 0000000..6633bca --- /dev/null +++ b/js/D3.js~ @@ -0,0 +1,1342 @@ +/** + * @version 1.0 + * @author Maik Kulbe + * @copyright (c) 2010 Maik Kulbe + */ + +/** + * RegEx escaping + */ +RegExp.escape = function(text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +}; + +/** + * KEY FUNCTION NAMESPACE + */ +var D3 = +{ + //needs a new Icon - best would be an icon per decoding type + //icon: "popupIcon.png", + icon: "../images/icon128.png", + /** + * Version number + * + * @var String + */ + version: "1.0", + /** + * list all functions so we can use this while saving + * @var Array + */ + checkboxes: Array( "functions_rot13", + "functions_timestamp", + "functions_crc32", + "functions_bin2hex", + "functions_bin2txt", + "functions_html_entity_decode", + "functions_htmlentities", + "functions_htmlspecialchars", + "functions_htmlspecialchars_decode", + "functions_uri_encode", + "functions_uri_decode", + "functions_md5", + "functions_sha1", + "functions_quoted_printable_decode", + "functions_quoted_printable_encode", + "functions_escapeshellarg", + "functions_base64_encode", + "functions_base64_decode", + "functions_unserialize", + "functions_leet_decode", + "functions_leet_encode", + "functions_reverse"), + + menuIds: {}, + + lastMessage: '', + + PhrasesEnglish: + new Array('crap', 'dude', 'hacker', + 'hacks', 'you', 'cool', 'oh my god', + 'fear', 'power', 'own', 'lol', + 'what the hell', 'elite', 'for the win', + 'oh really', 'good game'), + + PhrasesLeet: + new Array('carp', 'dood', 'haxor', 'hax', 'joo', + 'kewl', 'omg', 'ph43', 'powwah', 'pwn', 'lawl', + 'wth', 'leet', 'ftw', 'o rly', 'gg'), + + LettersEnglish: + new Array('n', 'b', 'k', 'd', 'e', 'f', 'g', 'h', + 'p', 'm', 'r', 'l', 'o', 'q', 's', 't', + 'u', 'x', 'w', 'y', 'z', 'c', 'a', 'j', + 'i', 'v', ' '), + + LettersLeet: + new Array('/\\/', '|}', '|X', '[)', '3', '|=', 'gee', '|-|', + '|*', '(\\/)', '|2', '1', '()', '0', '$', '+', + '|_|', '><', '\\X/', '\'/', '2', '<', '/\\', '_|', + '|', '\\/', ' '), + + checkInstall: function() { + if(!localStorage.getItem('D3installed'+this.version) || localStorage.getItem('D3installed'+this.version) != 'true') { + if(!localStorage.getItem("message_type")) + localStorage.setItem("message_type", "alert"); + if(!localStorage.getItem("message_type1")) + localStorage.setItem("message_type1", "1"); + if(!localStorage.getItem("message_type2")) + localStorage.setItem("message_type2", "0"); + if(!localStorage.getItem("message_type3")) + localStorage.setItem("message_type3", "0"); + if(!localStorage.getItem("message_type4")) + localStorage.setItem("message_type4", "0"); + if(!localStorage.getItem("message_type5")) + localStorage.setItem("message_type5", "0"); + + D3.checkboxes.each(function(el){ + if(localStorage.getItem(el) != "0" && localStorage.getItem(el) != "1") { + localStorage.setItem(el, "1"); + } + }); + localStorage.setItem('D3installed'+this.version, 'true'); + if(localStorage.getItem('D3lastversion')) { + localStorage.removeItem('D3installed'+localStorage.getItem('lastversion')); + } + localStorage.setItem('D3lastversion',this.version); + + } + }, + + createPopup: function(title, text) + { + var type = localStorage.getItem("message_type"); + /*if(localStorage.getItem("history_save") == "1") { + if(localStorage.getItem("history_content")) { + var content = JSON.parse(localStorage.getItem("history_content")); + if(content.itemsCount == 15) { + var tmp = { + "itemsCount": "15", + "items" : [] + }; + for(var i=0;i<=13;i++) { + tmp.items[i] = { + "title": title, + "text": text + }; + } + } else { + content.itemsCount = content.itemsCount++; + content.items[content.itemsCount-1] = { + "title": title, + "text": text + }; + } + } else { + var content = { + "itemsCount": "1", + "items": [ + { + "title": title, + "text": text + } + ] + }; + localStorage.setItem("history_content", JSON.stringify(content)); + } + }*/ + + if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { + D3.copyToClipboard(text); + } + + D3.lastMessage = text; + + switch (type) { + case 'console': + text = D3.base64_encode(text); + + chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); + + chrome.tabs.executeScript(null, {code:"console.log('d3coder:: FUNCTION: " + title + "');"}); + chrome.tabs.executeScript(null, {code:"console.log('d3coder:: VALUE:');"}); + window.setTimeout(function(){ + chrome.tabs.executeScript( + null, + {code:"D3content.logConsole('" + text + "');"} + ); + },400); + + break; + case 'alert': + alert(title + '\n\n' + text); + console.log(text); + break; + case 'div': + chrome.tabs.insertCSS(null, {file: "styles/content.css"}); + chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); + + window.setTimeout(function() { + text = D3.base64_encode(text); + chrome.tabs.executeScript( + null, + {code:"D3content.createDiv('" + title + "', '" + text + "');"} + ); + },400); + + break; + case 'inplace': + // TODO: replace text in page + chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); + + window.setTimeout(function() { + text = D3.base64_encode(text); + chrome.tabs.executeScript( + null, + {code:"D3content.replaceText('" + text + "');"} + ); + },400); + break; + default: + case 'notification': + var popup = window.webkitNotifications.createNotification( D3.icon, title, text); + popup.show(); + break; + } + }, + copyToClipboard: function(text) { + var bg = chrome.extension.getBackgroundPage(); + var clipboard = bg.document.getElementById("clipboard"); + clipboard.style.display = "block"; + clipboard.value = text; + clipboard.select(); + bg.document.execCommand("Copy"); + clipboard.style.display = "none"; + return true; + }, + rot13decode: function(text) + { + var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var textrot = new String(); + + for(var i = 0; i < text.length; i++) + { + var codechar = text.substring(i, i + 1); + var pos = keycode.indexOf(codechar.toUpperCase()); + + if(pos >= 0) + { + pos = (pos + keycode.length / 2) % keycode.length; + codechar = (codechar == codechar.toUpperCase()) ? keycode.substring(pos, pos + 1) : keycode.substring(pos, pos + 1).toLowerCase(); + } + textrot = textrot + codechar; + } + + return textrot; + }, + + timestampToDate: function(text) + { + var timestamp = parseInt(text); + + if(!timestamp) return; + + var dateObject = new Date(); + dateObject.setTime (timestamp * 1000); + return dateObject; + }, + crc32: function( str ) { + str = this.utf8_encode(str); + var table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; + + var crc = 0; + var x = 0; + var y = 0; + + crc = crc ^ (-1); + for (var i = 0, iTop = str.length; i < iTop; i++) { + y = ( crc ^ str.charCodeAt( i ) ) & 0xFF; + x = "0x" + table.substr( y * 9, 8 ); + crc = ( crc >>> 8 ) ^ x; + } + + return crc ^ (-1); + }, + bin2hex: function (s){ + var i, f = 0, a = []; + + s += ''; + f = s.length; + + for (i = 0; i/g, '>'); + + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE' : 1, + 'ENT_HTML_QUOTE_DOUBLE' : 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE' : 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i=0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } + else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/'/g, '''); + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + + return string; + }, + htmlspecialchars_decode: function (string, quote_style) { + var optTemp = 0, i = 0, noquotes= false; + if (typeof quote_style === 'undefined') { + quote_style = 2; + } + string = string.toString().replace(/</g, '<').replace(/>/g, '>'); + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE' : 1, + 'ENT_HTML_QUOTE_DOUBLE' : 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE' : 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i=0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } + else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should + // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + + return string; + }, + uri_encode: function (str) { + return encodeURIComponent(str); + }, + uri_decode: function (str) { + return decodeURIComponent(str); + }, + md5: function (str) { + var xl; + + var rotateLeft = function (lValue, iShiftBits) { + return (lValue<>>(32-iShiftBits)); + }; + + var addUnsigned = function (lX,lY) { + var lX4,lY4,lX8,lY8,lResult; + lX8 = (lX & 0x80000000); + lY8 = (lY & 0x80000000); + lX4 = (lX & 0x40000000); + lY4 = (lY & 0x40000000); + lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); + if (lX4 & lY4) { + return (lResult ^ 0x80000000 ^ lX8 ^ lY8); + } + if (lX4 | lY4) { + if (lResult & 0x40000000) { + return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); + } else { + return (lResult ^ 0x40000000 ^ lX8 ^ lY8); + } + } else { + return (lResult ^ lX8 ^ lY8); + } + }; + + var _F = function (x,y,z) { return (x & y) | ((~x) & z); }; + var _G = function (x,y,z) { return (x & z) | (y & (~z)); }; + var _H = function (x,y,z) { return (x ^ y ^ z); }; + var _I = function (x,y,z) { return (y ^ (x | (~z))); }; + + var _FF = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _GG = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _HH = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var _II = function (a,b,c,d,x,s,ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var convertToWordArray = function (str) { + var lWordCount; + var lMessageLength = str.length; + var lNumberOfWords_temp1=lMessageLength + 8; + var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; + var lNumberOfWords = (lNumberOfWords_temp2+1)*16; + var lWordArray=new Array(lNumberOfWords-1); + var lBytePosition = 0; + var lByteCount = 0; + while ( lByteCount < lMessageLength ) { + lWordCount = (lByteCount-(lByteCount % 4))/4; + lBytePosition = (lByteCount % 4)*8; + lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<>>29; + return lWordArray; + }; + + var wordToHex = function (lValue) { + var wordToHexValue="",wordToHexValue_temp="",lByte,lCount; + for (lCount = 0;lCount<=3;lCount++) { + lByte = (lValue>>>(lCount*8)) & 255; + wordToHexValue_temp = "0" + lByte.toString(16); + wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2); + } + return wordToHexValue; + }; + + var x=[], + k,AA,BB,CC,DD,a,b,c,d, + S11=7, S12=12, S13=17, S14=22, + S21=5, S22=9 , S23=14, S24=20, + S31=4, S32=11, S33=16, S34=23, + S41=6, S42=10, S43=15, S44=21; + + str = this.utf8_encode(str); + x = convertToWordArray(str); + a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; + + xl = x.length; + for (k=0;k>>(32-s)); + return t4; + }; + + var cvt_hex = function (val) { + var str=""; + var i; + var v; + + for (i=7; i>=0; i--) { + v = (val>>>(i*4))&0x0f; + str += v.toString(16); + } + return str; + }; + + var blockstart; + var i, j; + var W = new Array(80); + var H0 = 0x67452301; + var H1 = 0xEFCDAB89; + var H2 = 0x98BADCFE; + var H3 = 0x10325476; + var H4 = 0xC3D2E1F0; + var A, B, C, D, E; + var temp; + + str = this.utf8_encode(str); + var str_len = str.length; + + var word_array = []; + for (i=0; i>>29 ); + word_array.push( (str_len<<3)&0x0ffffffff ); + + for ( blockstart=0; blockstart-~ ]/gm, + RFC2045Encode1OUT = function (sMatch) { + // Encode space before CRLF sequence to prevent spaces from being stripped + // Keep hard line breaks intact; CRLF sequences + if (sMatch.length > 1) { + return sMatch.replace(' ', '=20'); + } + // Encode matching character + var chr = sMatch.charCodeAt(0); + return '=' + hexChars[((chr >>> 4) & 15)] + hexChars[(chr & 15)]; + }, + RFC2045Encode2IN = /.{1,72}(?!\r\n)[^=]{0,3}/g, + RFC2045Encode2OUT = function (sMatch) { + if (sMatch.substr(sMatch.length - 2) === '\r\n') { + return sMatch; + } + return sMatch + '=\r\n'; + }; + str = str.replace(RFC2045Encode1IN, RFC2045Encode1OUT).replace(RFC2045Encode2IN, RFC2045Encode2OUT); + return str.substr(0, str.length - 3); + }, + escapeshellarg: function (arg) { + var ret = ''; + + ret = arg.replace(/[^\\]'/g, function(m, i, s) { + return m.slice(0, 1)+'\\\''; + }); + + return "'"+ret+"'"; + }, + leetEncode: function (inputString) { + if(!inputString ) return ""; + + for (i = 0; i < D3.PhrasesEnglish.length; ++i) + inputString = inputString.replace( + new RegExp(D3.PhrasesEnglish[i], "gi"), + D3.PhrasesLeet[i] + ); + + for (i = 0; i < D3.LettersEnglish.length; ++i) + inputString = inputString.replace( + new RegExp(D3.LettersEnglish[i], "gi"), + D3.LettersLeet[i] + ); + return inputString; + }, + leetDecode: function (inputString) { + for (i = 0; i < D3.LettersLeet.length; ++i) + inputString = inputString.replace( + new RegExp(RegExp.escape(D3.LettersLeet[i]), "g"), + D3.LettersEnglish[i] + ); + + for (i = 0; i < D3.PhrasesLeet.length; ++i) + inputString = inputString.replace( + new RegExp(RegExp.escape(D3.PhrasesLeet[i]), "g"), + D3.PhrasesEnglish[i] + ); + return inputString; + }, + reverseText: function (inputString) { + return inputString.split("").reverse().join(""); + }, + base64_encode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = []; + + if (!data) { + return data; + } + + data = this.utf8_encode(data+''); + + do { // pack three octets into four hexets + o1 = data.charCodeAt(i++); + o2 = data.charCodeAt(i++); + o3 = data.charCodeAt(i++); + + bits = o1<<16 | o2<<8 | o3; + + h1 = bits>>18 & 0x3f; + h2 = bits>>12 & 0x3f; + h3 = bits>>6 & 0x3f; + h4 = bits & 0x3f; + + // use hexets to index into b64, and append result to encoded string + tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); + } while (i < data.length); + + enc = tmp_arr.join(''); + + switch (data.length % 3) { + case 1: + enc = enc.slice(0, -2) + '=='; + break; + case 2: + enc = enc.slice(0, -1) + '='; + break; + } + + return enc; + }, + base64_decode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; + + if (!data) { + return data; + } + + data += ''; + + do { // unpack four hexets into three octets using index points in b64 + h1 = b64.indexOf(data.charAt(i++)); + h2 = b64.indexOf(data.charAt(i++)); + h3 = b64.indexOf(data.charAt(i++)); + h4 = b64.indexOf(data.charAt(i++)); + + bits = h1<<18 | h2<<12 | h3<<6 | h4; + + o1 = bits>>16 & 0xff; + o2 = bits>>8 & 0xff; + o3 = bits & 0xff; + + if (h3 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1); + } else if (h4 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1, o2); + } else { + tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); + } + } while (i < data.length); + + dec = tmp_arr.join(''); + dec = this.utf8_decode(dec); + + return dec; + }, + get_html_translation_table: function (table, quote_style) { + + var entities = {}, hash_map = {}, decimal = 0, symbol = ''; + var constMappingTable = {}, constMappingQuoteStyle = {}; + var useTable = {}, useQuoteStyle = {}; + + // Translate arguments + constMappingTable[0] = 'HTML_SPECIALCHARS'; + constMappingTable[1] = 'HTML_ENTITIES'; + constMappingQuoteStyle[0] = 'ENT_NOQUOTES'; + constMappingQuoteStyle[2] = 'ENT_COMPAT'; + constMappingQuoteStyle[3] = 'ENT_QUOTES'; + + useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS'; + useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT'; + + if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') { + throw new Error("Table: "+useTable+' not supported'); + // return false; + } + + entities['38'] = '&'; + if (useTable === 'HTML_ENTITIES') { + entities['160'] = ' '; + entities['161'] = '¡'; + entities['162'] = '¢'; + entities['163'] = '£'; + entities['164'] = '¤'; + entities['165'] = '¥'; + entities['166'] = '¦'; + entities['167'] = '§'; + entities['168'] = '¨'; + entities['169'] = '©'; + entities['170'] = 'ª'; + entities['171'] = '«'; + entities['172'] = '¬'; + entities['173'] = '­'; + entities['174'] = '®'; + entities['175'] = '¯'; + entities['176'] = '°'; + entities['177'] = '±'; + entities['178'] = '²'; + entities['179'] = '³'; + entities['180'] = '´'; + entities['181'] = 'µ'; + entities['182'] = '¶'; + entities['183'] = '·'; + entities['184'] = '¸'; + entities['185'] = '¹'; + entities['186'] = 'º'; + entities['187'] = '»'; + entities['188'] = '¼'; + entities['189'] = '½'; + entities['190'] = '¾'; + entities['191'] = '¿'; + entities['192'] = 'À'; + entities['193'] = 'Á'; + entities['194'] = 'Â'; + entities['195'] = 'Ã'; + entities['196'] = 'Ä'; + entities['197'] = 'Å'; + entities['198'] = 'Æ'; + entities['199'] = 'Ç'; + entities['200'] = 'È'; + entities['201'] = 'É'; + entities['202'] = 'Ê'; + entities['203'] = 'Ë'; + entities['204'] = 'Ì'; + entities['205'] = 'Í'; + entities['206'] = 'Î'; + entities['207'] = 'Ï'; + entities['208'] = 'Ð'; + entities['209'] = 'Ñ'; + entities['210'] = 'Ò'; + entities['211'] = 'Ó'; + entities['212'] = 'Ô'; + entities['213'] = 'Õ'; + entities['214'] = 'Ö'; + entities['215'] = '×'; + entities['216'] = 'Ø'; + entities['217'] = 'Ù'; + entities['218'] = 'Ú'; + entities['219'] = 'Û'; + entities['220'] = 'Ü'; + entities['221'] = 'Ý'; + entities['222'] = 'Þ'; + entities['223'] = 'ß'; + entities['224'] = 'à'; + entities['225'] = 'á'; + entities['226'] = 'â'; + entities['227'] = 'ã'; + entities['228'] = 'ä'; + entities['229'] = 'å'; + entities['230'] = 'æ'; + entities['231'] = 'ç'; + entities['232'] = 'è'; + entities['233'] = 'é'; + entities['234'] = 'ê'; + entities['235'] = 'ë'; + entities['236'] = 'ì'; + entities['237'] = 'í'; + entities['238'] = 'î'; + entities['239'] = 'ï'; + entities['240'] = 'ð'; + entities['241'] = 'ñ'; + entities['242'] = 'ò'; + entities['243'] = 'ó'; + entities['244'] = 'ô'; + entities['245'] = 'õ'; + entities['246'] = 'ö'; + entities['247'] = '÷'; + entities['248'] = 'ø'; + entities['249'] = 'ù'; + entities['250'] = 'ú'; + entities['251'] = 'û'; + entities['252'] = 'ü'; + entities['253'] = 'ý'; + entities['254'] = 'þ'; + entities['255'] = 'ÿ'; + } + + if (useQuoteStyle !== 'ENT_NOQUOTES') { + entities['34'] = '"'; + } + if (useQuoteStyle === 'ENT_QUOTES') { + entities['39'] = '''; + } + entities['60'] = '<'; + entities['62'] = '>'; + + + // ascii decimals to real symbols + for (decimal in entities) { + symbol = String.fromCharCode(decimal); + hash_map[symbol] = entities[decimal]; + } + + return hash_map; + }, + unserialize: function (data) { + var that = this; + var utf8Overhead = function(chr) { + var code = chr.charCodeAt(0); + if (code < 0x0080) { + return 0; + } + if (code < 0x0800) { + return 1; + } + return 2; + }; + + + var error = function (type, msg, filename, line){throw new that.window[type](msg, filename, line);}; + var read_until = function (data, offset, stopchr){ + var buf = []; + var chr = data.slice(offset, offset + 1); + var i = 2; + while (chr != stopchr) { + if ((i+offset) > data.length) { + error('Error', 'Invalid'); + } + buf.push(chr); + chr = data.slice(offset + (i - 1),offset + i); + i += 1; + } + return [buf.length, buf.join('')]; + }; + var read_chrs = function (data, offset, length){ + var buf; + + buf = []; + for (var i = 0;i < length;i++){ + var chr = data.slice(offset + (i - 1),offset + i); + buf.push(chr); + length -= utf8Overhead(chr); + } + return [buf.length, buf.join('')]; + }; + var _unserialize = function (data, offset){ + var readdata; + var readData; + var chrs = 0; + var ccount; + var stringlength; + var keyandchrs; + var keys; + + if (!offset) {offset = 0;} + var dtype = (data.slice(offset, offset + 1)).toLowerCase(); + + var dataoffset = offset + 2; + var typeconvert = function(x) {return x;}; + + switch (dtype){ + case 'i': + typeconvert = function (x) {return parseInt(x, 10);}; + readData = read_until(data, dataoffset, ';'); + chrs = readData[0]; + readdata = readData[1]; + dataoffset += chrs + 1; + break; + case 'b': + typeconvert = function (x) {return parseInt(x, 10) !== 0;}; + readData = read_until(data, dataoffset, ';'); + chrs = readData[0]; + readdata = readData[1]; + dataoffset += chrs + 1; + break; + case 'd': + typeconvert = function (x) {return parseFloat(x);}; + readData = read_until(data, dataoffset, ';'); + chrs = readData[0]; + readdata = readData[1]; + dataoffset += chrs + 1; + break; + case 'n': + readdata = null; + break; + case 's': + ccount = read_until(data, dataoffset, ':'); + chrs = ccount[0]; + stringlength = ccount[1]; + dataoffset += chrs + 2; + + readData = read_chrs(data, dataoffset+1, parseInt(stringlength, 10)); + chrs = readData[0]; + readdata = readData[1]; + dataoffset += chrs + 2; + if (chrs != parseInt(stringlength, 10) && chrs != readdata.length){ + error('SyntaxError', 'String length mismatch'); + } + + // Length was calculated on an utf-8 encoded string + // so wait with decoding + readdata = that.utf8_decode(readdata); + break; + case 'a': + readdata = {}; + + keyandchrs = read_until(data, dataoffset, ':'); + chrs = keyandchrs[0]; + keys = keyandchrs[1]; + dataoffset += chrs + 2; + + for (var i = 0; i < parseInt(keys, 10); i++){ + var kprops = _unserialize(data, dataoffset); + var kchrs = kprops[1]; + var key = kprops[2]; + dataoffset += kchrs; + + var vprops = _unserialize(data, dataoffset); + var vchrs = vprops[1]; + var value = vprops[2]; + dataoffset += vchrs; + + readdata[key] = value; + } + + dataoffset += 1; + break; + default: + error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype); + break; + } + return [dtype, dataoffset - offset, typeconvert(readdata)]; + }; + + return D3.var_dump(_unserialize((data+''), 0)[2]); + }, + utf8_encode: function ( argString ) { + var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n"); + + var utftext = ""; + var start, end; + var stringl = 0; + + start = end = 0; + stringl = string.length; + for (var n = 0; n < stringl; n++) { + var c1 = string.charCodeAt(n); + var enc = null; + + if (c1 < 128) { + end++; + } else if (c1 > 127 && c1 < 2048) { + enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128); + } else { + enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128); + } + if (enc !== null) { + if (end > start) { + utftext += string.substring(start, end); + } + utftext += enc; + start = end = n+1; + } + } + + if (end > start) { + utftext += string.substring(start, string.length); + } + + return utftext; + }, + utf8_decode: function ( str_data ) { + var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; + + str_data += ''; + + while ( i < str_data.length ) { + c1 = str_data.charCodeAt(i); + if (c1 < 128) { + tmp_arr[ac++] = String.fromCharCode(c1); + i++; + } else if ((c1 > 191) && (c1 < 224)) { + c2 = str_data.charCodeAt(i+1); + tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = str_data.charCodeAt(i+1); + c3 = str_data.charCodeAt(i+2); + tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return tmp_arr.join(''); + }, + + /** + * Concatenates the values of a variable into an easily readable string + * by Matt Hackett [scriptnode.com] + * @param {Object} x The variable to debug + * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10] + * @param {String} sep The separator to use between [default: a single space ' '] + * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use + */ + var_dump: function (x, max, sep, l) { + + l = l || 0; + max = max || 10; + sep = sep || ' '; + + if (l > max) { + return "[WARNING: Too much recursion]\n"; + } + + var + i, + r = '', + t = typeof x, + tab = ''; + + if (x === null) { + r += "(null)\n"; + } else if (t == 'object') { + + l++; + + for (i = 0; i < l; i++) { + tab += sep; + } + + if (x && x.length) { + t = 'array'; + } + + r += '(' + t + ") :\n"; + + for (i in x) { + try { + r += tab + '[' + i + '] : ' + D3.var_dump(x[i], max, sep, (l + 1)); + } catch(e) { + return "[ERROR: " + e + "]\n"; + } + } + + } else { + + if (t == 'string') { + if (x == '') { + x = '(empty)'; + } + } + + r += '(' + t + ') ' + x + "\n"; + + } + + return r; + + }, + + menus: false, + + menuLoadTime: 1000, + + createContextMenu: function() { + var changed = false, + createMenu = function(name, info, ptFunction) { + var menu; + + if(localStorage.getItem("functions_" + name) == '1' && !D3.menuIds[name]) { + menu = { + "title" : info, + "contexts" : ["selection", "editable"], + "onclick" : function(info, tab){D3.createPopup(info, ptFunction(info.selectionText));} + }; + + D3.menuIds[name]=chrome.contextMenus.create(menu); + changed = true; + } else if(localStorage.getItem("functions_" + name) == '0' && D3.menuIds[name]) { + console.log(D3.menuIds[name]); + chrome.contextMenus.remove(D3.menuIds[name]); + D3.menuIds[name] == null; + } + }; + + D3.menus = true; + + /** + * MENU ITEM DEFINITIONS + */ + createMenu('rot13', 'Rot13 Decode', D3.rot13decode); + createMenu('timestamp', 'Unix timestamp to date conversion', D3.timestampToDate); + createMenu('bin2hex', 'bin2hex', D3.bin2hex); + createMenu('bin2txt', 'bin2txt', D3.bin2txt); + createMenu('uri_encode', 'URI encode', D3.uri_encode); + createMenu('uri_decode', 'URI decode', D3.uri_decode); + createMenu('htmlentities', 'HTML entities', D3.htmlentities); + createMenu('html_entity_decode', 'HTML entity decode', D3.html_entity_decode); + createMenu('htmlspecialchars', 'HTML specialchars', D3.htmlspecialchars); + createMenu('htmlspecialchars_decode', 'HTML specialchars decode', D3.htmlspecialchars_decode); + createMenu('md5', 'MD5', D3.md5); + createMenu('sha1', 'SHA1', D3.sha1); + createMenu('crc32', 'CRC32', D3.crc32); + createMenu('quoted_printable_decode', 'Quoted printable decode', D3.quoted_printable_decode); + createMenu('quoted_printable_encode', 'Quoted printable encode', D3.quoted_printable_encode); + createMenu('escapeshellarg', 'Escapeshellarg', D3.escapeshellarg); + createMenu('base64_encode', 'Base64 encode', D3.base64_encode); + createMenu('base64_decode', 'Base64 decode', D3.base64_decode); + createMenu('unserialize', 'Unserialize', D3.unserialize); + createMenu('leet_encode', 'L33T Encode', D3.leetEncode); + createMenu('leet_decode', 'L33T Decode', D3.leetDecode); + createMenu('reverse', 'Reverse text', D3.reverseText); + + if (changed === true && D3.menuIds["options"]) { + chrome.contextMenus.remove(D3.menuIds['options']); + D3.menuIds["options"] = null; + } + + if (!D3.menuIds["options"]) { + // Menu item for options + menu = { + "title" : "d3coder options", + "contexts" : ["all"], + "onclick" : function(info, tab) {chrome.tabs.create({url:"html/menu.html"});} + } + + D3.menuIds["options"]=chrome.contextMenus.create(menu); + } + } +}; diff --git a/manifest.json b/manifest.json index 1df6ca0..6553c73 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.2.6", + "version": "1.3.0", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ @@ -9,7 +9,8 @@ "notifications", "tabs", "*://*/*", - "clipboardWrite" + "clipboardWrite", + "clipboardRead" ], "background": { "page": "html/background.html" diff --git a/manifest.json~ b/manifest.json~ new file mode 100644 index 0000000..24fcb0d --- /dev/null +++ b/manifest.json~ @@ -0,0 +1,29 @@ +{ + "manifest_version": 2, + "name": "d3coder", + "version": "1.2.6", + "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", + "options_page": "html/menu.html", + "permissions": [ + "contextMenus", + "notifications", + "tabs", + "*://*/*", + "clipboardWrite", + "clipboardRead" + ], + "background": { + "page": "html/background.html" + }, + "icons": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" }, + "content_scripts": [ + { + "matches": ["*://*/*"], + "css": ["styles/content.css"], + "js": ["js/mootools.js", "js/contentWorker.js"], + "all_frames": true + }] +} From d20b97be9134938327c332b20f6d25d7859adef0 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sat, 13 Apr 2013 21:53:45 -0700 Subject: [PATCH 33/61] Fixed bug for HTML Entities --- js/D3.js | 13 +- js/D3.js~ | 1342 ----------------------------------------------------- 2 files changed, 11 insertions(+), 1344 deletions(-) delete mode 100644 js/D3.js~ diff --git a/js/D3.js b/js/D3.js index e06d3aa..3eedcde 100644 --- a/js/D3.js +++ b/js/D3.js @@ -309,7 +309,7 @@ var D3 = var hash_map = {}, symbol = '', tmp_str = '', entity = ''; tmp_str = string.toString(); - if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) { + if (false === (hash_map = D3.get_html_translation_table('HTML_ENTITIES', quote_style))) { return false; } @@ -330,7 +330,7 @@ var D3 = var hash_map = {}, symbol = '', tmp_str = '', entity = ''; tmp_str = string.toString(); - if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) { + if (false === (hash_map = D3.get_html_translation_table('HTML_ENTITIES', quote_style))) { return false; } hash_map["'"] = '''; @@ -1285,8 +1285,17 @@ var D3 = "contexts" : ["selection", "editable"], "onclick" : function(info, tab){D3.createPopup(info, ptFunction(info.selectionText));} }; + D3.menuIds[name]=chrome.contextMenus.create(menu); + menu = { + "title" : info, + "contexts" : ["page"], + "onclick" : function(info, tab){ + var clipboardText = 'this could be from clipboard'; + D3.createPopup(info, ptFunction(clipboardText));} + }; D3.menuIds[name]=chrome.contextMenus.create(menu); + changed = true; } else if(localStorage.getItem("functions_" + name) == '0' && D3.menuIds[name]) { console.log(D3.menuIds[name]); diff --git a/js/D3.js~ b/js/D3.js~ deleted file mode 100644 index 6633bca..0000000 --- a/js/D3.js~ +++ /dev/null @@ -1,1342 +0,0 @@ -/** - * @version 1.0 - * @author Maik Kulbe - * @copyright (c) 2010 Maik Kulbe - */ - -/** - * RegEx escaping - */ -RegExp.escape = function(text) { - return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); -}; - -/** - * KEY FUNCTION NAMESPACE - */ -var D3 = -{ - //needs a new Icon - best would be an icon per decoding type - //icon: "popupIcon.png", - icon: "../images/icon128.png", - /** - * Version number - * - * @var String - */ - version: "1.0", - /** - * list all functions so we can use this while saving - * @var Array - */ - checkboxes: Array( "functions_rot13", - "functions_timestamp", - "functions_crc32", - "functions_bin2hex", - "functions_bin2txt", - "functions_html_entity_decode", - "functions_htmlentities", - "functions_htmlspecialchars", - "functions_htmlspecialchars_decode", - "functions_uri_encode", - "functions_uri_decode", - "functions_md5", - "functions_sha1", - "functions_quoted_printable_decode", - "functions_quoted_printable_encode", - "functions_escapeshellarg", - "functions_base64_encode", - "functions_base64_decode", - "functions_unserialize", - "functions_leet_decode", - "functions_leet_encode", - "functions_reverse"), - - menuIds: {}, - - lastMessage: '', - - PhrasesEnglish: - new Array('crap', 'dude', 'hacker', - 'hacks', 'you', 'cool', 'oh my god', - 'fear', 'power', 'own', 'lol', - 'what the hell', 'elite', 'for the win', - 'oh really', 'good game'), - - PhrasesLeet: - new Array('carp', 'dood', 'haxor', 'hax', 'joo', - 'kewl', 'omg', 'ph43', 'powwah', 'pwn', 'lawl', - 'wth', 'leet', 'ftw', 'o rly', 'gg'), - - LettersEnglish: - new Array('n', 'b', 'k', 'd', 'e', 'f', 'g', 'h', - 'p', 'm', 'r', 'l', 'o', 'q', 's', 't', - 'u', 'x', 'w', 'y', 'z', 'c', 'a', 'j', - 'i', 'v', ' '), - - LettersLeet: - new Array('/\\/', '|}', '|X', '[)', '3', '|=', 'gee', '|-|', - '|*', '(\\/)', '|2', '1', '()', '0', '$', '+', - '|_|', '><', '\\X/', '\'/', '2', '<', '/\\', '_|', - '|', '\\/', ' '), - - checkInstall: function() { - if(!localStorage.getItem('D3installed'+this.version) || localStorage.getItem('D3installed'+this.version) != 'true') { - if(!localStorage.getItem("message_type")) - localStorage.setItem("message_type", "alert"); - if(!localStorage.getItem("message_type1")) - localStorage.setItem("message_type1", "1"); - if(!localStorage.getItem("message_type2")) - localStorage.setItem("message_type2", "0"); - if(!localStorage.getItem("message_type3")) - localStorage.setItem("message_type3", "0"); - if(!localStorage.getItem("message_type4")) - localStorage.setItem("message_type4", "0"); - if(!localStorage.getItem("message_type5")) - localStorage.setItem("message_type5", "0"); - - D3.checkboxes.each(function(el){ - if(localStorage.getItem(el) != "0" && localStorage.getItem(el) != "1") { - localStorage.setItem(el, "1"); - } - }); - localStorage.setItem('D3installed'+this.version, 'true'); - if(localStorage.getItem('D3lastversion')) { - localStorage.removeItem('D3installed'+localStorage.getItem('lastversion')); - } - localStorage.setItem('D3lastversion',this.version); - - } - }, - - createPopup: function(title, text) - { - var type = localStorage.getItem("message_type"); - /*if(localStorage.getItem("history_save") == "1") { - if(localStorage.getItem("history_content")) { - var content = JSON.parse(localStorage.getItem("history_content")); - if(content.itemsCount == 15) { - var tmp = { - "itemsCount": "15", - "items" : [] - }; - for(var i=0;i<=13;i++) { - tmp.items[i] = { - "title": title, - "text": text - }; - } - } else { - content.itemsCount = content.itemsCount++; - content.items[content.itemsCount-1] = { - "title": title, - "text": text - }; - } - } else { - var content = { - "itemsCount": "1", - "items": [ - { - "title": title, - "text": text - } - ] - }; - localStorage.setItem("history_content", JSON.stringify(content)); - } - }*/ - - if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { - D3.copyToClipboard(text); - } - - D3.lastMessage = text; - - switch (type) { - case 'console': - text = D3.base64_encode(text); - - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); - chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); - - chrome.tabs.executeScript(null, {code:"console.log('d3coder:: FUNCTION: " + title + "');"}); - chrome.tabs.executeScript(null, {code:"console.log('d3coder:: VALUE:');"}); - window.setTimeout(function(){ - chrome.tabs.executeScript( - null, - {code:"D3content.logConsole('" + text + "');"} - ); - },400); - - break; - case 'alert': - alert(title + '\n\n' + text); - console.log(text); - break; - case 'div': - chrome.tabs.insertCSS(null, {file: "styles/content.css"}); - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); - chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); - - window.setTimeout(function() { - text = D3.base64_encode(text); - chrome.tabs.executeScript( - null, - {code:"D3content.createDiv('" + title + "', '" + text + "');"} - ); - },400); - - break; - case 'inplace': - // TODO: replace text in page - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); - chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); - - window.setTimeout(function() { - text = D3.base64_encode(text); - chrome.tabs.executeScript( - null, - {code:"D3content.replaceText('" + text + "');"} - ); - },400); - break; - default: - case 'notification': - var popup = window.webkitNotifications.createNotification( D3.icon, title, text); - popup.show(); - break; - } - }, - copyToClipboard: function(text) { - var bg = chrome.extension.getBackgroundPage(); - var clipboard = bg.document.getElementById("clipboard"); - clipboard.style.display = "block"; - clipboard.value = text; - clipboard.select(); - bg.document.execCommand("Copy"); - clipboard.style.display = "none"; - return true; - }, - rot13decode: function(text) - { - var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - var textrot = new String(); - - for(var i = 0; i < text.length; i++) - { - var codechar = text.substring(i, i + 1); - var pos = keycode.indexOf(codechar.toUpperCase()); - - if(pos >= 0) - { - pos = (pos + keycode.length / 2) % keycode.length; - codechar = (codechar == codechar.toUpperCase()) ? keycode.substring(pos, pos + 1) : keycode.substring(pos, pos + 1).toLowerCase(); - } - textrot = textrot + codechar; - } - - return textrot; - }, - - timestampToDate: function(text) - { - var timestamp = parseInt(text); - - if(!timestamp) return; - - var dateObject = new Date(); - dateObject.setTime (timestamp * 1000); - return dateObject; - }, - crc32: function( str ) { - str = this.utf8_encode(str); - var table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"; - - var crc = 0; - var x = 0; - var y = 0; - - crc = crc ^ (-1); - for (var i = 0, iTop = str.length; i < iTop; i++) { - y = ( crc ^ str.charCodeAt( i ) ) & 0xFF; - x = "0x" + table.substr( y * 9, 8 ); - crc = ( crc >>> 8 ) ^ x; - } - - return crc ^ (-1); - }, - bin2hex: function (s){ - var i, f = 0, a = []; - - s += ''; - f = s.length; - - for (i = 0; i/g, '>'); - - var OPTS = { - 'ENT_NOQUOTES': 0, - 'ENT_HTML_QUOTE_SINGLE' : 1, - 'ENT_HTML_QUOTE_DOUBLE' : 2, - 'ENT_COMPAT': 2, - 'ENT_QUOTES': 3, - 'ENT_IGNORE' : 4 - }; - if (quote_style === 0) { - noquotes = true; - } - if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags - quote_style = [].concat(quote_style); - for (i=0; i < quote_style.length; i++) { - // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 - if (OPTS[quote_style[i]] === 0) { - noquotes = true; - } - else if (OPTS[quote_style[i]]) { - optTemp = optTemp | OPTS[quote_style[i]]; - } - } - quote_style = optTemp; - } - if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { - string = string.replace(/'/g, '''); - } - if (!noquotes) { - string = string.replace(/"/g, '"'); - } - - return string; - }, - htmlspecialchars_decode: function (string, quote_style) { - var optTemp = 0, i = 0, noquotes= false; - if (typeof quote_style === 'undefined') { - quote_style = 2; - } - string = string.toString().replace(/</g, '<').replace(/>/g, '>'); - var OPTS = { - 'ENT_NOQUOTES': 0, - 'ENT_HTML_QUOTE_SINGLE' : 1, - 'ENT_HTML_QUOTE_DOUBLE' : 2, - 'ENT_COMPAT': 2, - 'ENT_QUOTES': 3, - 'ENT_IGNORE' : 4 - }; - if (quote_style === 0) { - noquotes = true; - } - if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags - quote_style = [].concat(quote_style); - for (i=0; i < quote_style.length; i++) { - // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 - if (OPTS[quote_style[i]] === 0) { - noquotes = true; - } - else if (OPTS[quote_style[i]]) { - optTemp = optTemp | OPTS[quote_style[i]]; - } - } - quote_style = optTemp; - } - if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { - string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should - // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP - } - if (!noquotes) { - string = string.replace(/"/g, '"'); - } - // Put this in last place to avoid escape being double-decoded - string = string.replace(/&/g, '&'); - - return string; - }, - uri_encode: function (str) { - return encodeURIComponent(str); - }, - uri_decode: function (str) { - return decodeURIComponent(str); - }, - md5: function (str) { - var xl; - - var rotateLeft = function (lValue, iShiftBits) { - return (lValue<>>(32-iShiftBits)); - }; - - var addUnsigned = function (lX,lY) { - var lX4,lY4,lX8,lY8,lResult; - lX8 = (lX & 0x80000000); - lY8 = (lY & 0x80000000); - lX4 = (lX & 0x40000000); - lY4 = (lY & 0x40000000); - lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); - if (lX4 & lY4) { - return (lResult ^ 0x80000000 ^ lX8 ^ lY8); - } - if (lX4 | lY4) { - if (lResult & 0x40000000) { - return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); - } else { - return (lResult ^ 0x40000000 ^ lX8 ^ lY8); - } - } else { - return (lResult ^ lX8 ^ lY8); - } - }; - - var _F = function (x,y,z) { return (x & y) | ((~x) & z); }; - var _G = function (x,y,z) { return (x & z) | (y & (~z)); }; - var _H = function (x,y,z) { return (x ^ y ^ z); }; - var _I = function (x,y,z) { return (y ^ (x | (~z))); }; - - var _FF = function (a,b,c,d,x,s,ac) { - a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac)); - return addUnsigned(rotateLeft(a, s), b); - }; - - var _GG = function (a,b,c,d,x,s,ac) { - a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac)); - return addUnsigned(rotateLeft(a, s), b); - }; - - var _HH = function (a,b,c,d,x,s,ac) { - a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac)); - return addUnsigned(rotateLeft(a, s), b); - }; - - var _II = function (a,b,c,d,x,s,ac) { - a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac)); - return addUnsigned(rotateLeft(a, s), b); - }; - - var convertToWordArray = function (str) { - var lWordCount; - var lMessageLength = str.length; - var lNumberOfWords_temp1=lMessageLength + 8; - var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; - var lNumberOfWords = (lNumberOfWords_temp2+1)*16; - var lWordArray=new Array(lNumberOfWords-1); - var lBytePosition = 0; - var lByteCount = 0; - while ( lByteCount < lMessageLength ) { - lWordCount = (lByteCount-(lByteCount % 4))/4; - lBytePosition = (lByteCount % 4)*8; - lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<>>29; - return lWordArray; - }; - - var wordToHex = function (lValue) { - var wordToHexValue="",wordToHexValue_temp="",lByte,lCount; - for (lCount = 0;lCount<=3;lCount++) { - lByte = (lValue>>>(lCount*8)) & 255; - wordToHexValue_temp = "0" + lByte.toString(16); - wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2); - } - return wordToHexValue; - }; - - var x=[], - k,AA,BB,CC,DD,a,b,c,d, - S11=7, S12=12, S13=17, S14=22, - S21=5, S22=9 , S23=14, S24=20, - S31=4, S32=11, S33=16, S34=23, - S41=6, S42=10, S43=15, S44=21; - - str = this.utf8_encode(str); - x = convertToWordArray(str); - a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; - - xl = x.length; - for (k=0;k>>(32-s)); - return t4; - }; - - var cvt_hex = function (val) { - var str=""; - var i; - var v; - - for (i=7; i>=0; i--) { - v = (val>>>(i*4))&0x0f; - str += v.toString(16); - } - return str; - }; - - var blockstart; - var i, j; - var W = new Array(80); - var H0 = 0x67452301; - var H1 = 0xEFCDAB89; - var H2 = 0x98BADCFE; - var H3 = 0x10325476; - var H4 = 0xC3D2E1F0; - var A, B, C, D, E; - var temp; - - str = this.utf8_encode(str); - var str_len = str.length; - - var word_array = []; - for (i=0; i>>29 ); - word_array.push( (str_len<<3)&0x0ffffffff ); - - for ( blockstart=0; blockstart-~ ]/gm, - RFC2045Encode1OUT = function (sMatch) { - // Encode space before CRLF sequence to prevent spaces from being stripped - // Keep hard line breaks intact; CRLF sequences - if (sMatch.length > 1) { - return sMatch.replace(' ', '=20'); - } - // Encode matching character - var chr = sMatch.charCodeAt(0); - return '=' + hexChars[((chr >>> 4) & 15)] + hexChars[(chr & 15)]; - }, - RFC2045Encode2IN = /.{1,72}(?!\r\n)[^=]{0,3}/g, - RFC2045Encode2OUT = function (sMatch) { - if (sMatch.substr(sMatch.length - 2) === '\r\n') { - return sMatch; - } - return sMatch + '=\r\n'; - }; - str = str.replace(RFC2045Encode1IN, RFC2045Encode1OUT).replace(RFC2045Encode2IN, RFC2045Encode2OUT); - return str.substr(0, str.length - 3); - }, - escapeshellarg: function (arg) { - var ret = ''; - - ret = arg.replace(/[^\\]'/g, function(m, i, s) { - return m.slice(0, 1)+'\\\''; - }); - - return "'"+ret+"'"; - }, - leetEncode: function (inputString) { - if(!inputString ) return ""; - - for (i = 0; i < D3.PhrasesEnglish.length; ++i) - inputString = inputString.replace( - new RegExp(D3.PhrasesEnglish[i], "gi"), - D3.PhrasesLeet[i] - ); - - for (i = 0; i < D3.LettersEnglish.length; ++i) - inputString = inputString.replace( - new RegExp(D3.LettersEnglish[i], "gi"), - D3.LettersLeet[i] - ); - return inputString; - }, - leetDecode: function (inputString) { - for (i = 0; i < D3.LettersLeet.length; ++i) - inputString = inputString.replace( - new RegExp(RegExp.escape(D3.LettersLeet[i]), "g"), - D3.LettersEnglish[i] - ); - - for (i = 0; i < D3.PhrasesLeet.length; ++i) - inputString = inputString.replace( - new RegExp(RegExp.escape(D3.PhrasesLeet[i]), "g"), - D3.PhrasesEnglish[i] - ); - return inputString; - }, - reverseText: function (inputString) { - return inputString.split("").reverse().join(""); - }, - base64_encode: function (data) { - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = []; - - if (!data) { - return data; - } - - data = this.utf8_encode(data+''); - - do { // pack three octets into four hexets - o1 = data.charCodeAt(i++); - o2 = data.charCodeAt(i++); - o3 = data.charCodeAt(i++); - - bits = o1<<16 | o2<<8 | o3; - - h1 = bits>>18 & 0x3f; - h2 = bits>>12 & 0x3f; - h3 = bits>>6 & 0x3f; - h4 = bits & 0x3f; - - // use hexets to index into b64, and append result to encoded string - tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); - } while (i < data.length); - - enc = tmp_arr.join(''); - - switch (data.length % 3) { - case 1: - enc = enc.slice(0, -2) + '=='; - break; - case 2: - enc = enc.slice(0, -1) + '='; - break; - } - - return enc; - }, - base64_decode: function (data) { - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; - - if (!data) { - return data; - } - - data += ''; - - do { // unpack four hexets into three octets using index points in b64 - h1 = b64.indexOf(data.charAt(i++)); - h2 = b64.indexOf(data.charAt(i++)); - h3 = b64.indexOf(data.charAt(i++)); - h4 = b64.indexOf(data.charAt(i++)); - - bits = h1<<18 | h2<<12 | h3<<6 | h4; - - o1 = bits>>16 & 0xff; - o2 = bits>>8 & 0xff; - o3 = bits & 0xff; - - if (h3 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1); - } else if (h4 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1, o2); - } else { - tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); - } - } while (i < data.length); - - dec = tmp_arr.join(''); - dec = this.utf8_decode(dec); - - return dec; - }, - get_html_translation_table: function (table, quote_style) { - - var entities = {}, hash_map = {}, decimal = 0, symbol = ''; - var constMappingTable = {}, constMappingQuoteStyle = {}; - var useTable = {}, useQuoteStyle = {}; - - // Translate arguments - constMappingTable[0] = 'HTML_SPECIALCHARS'; - constMappingTable[1] = 'HTML_ENTITIES'; - constMappingQuoteStyle[0] = 'ENT_NOQUOTES'; - constMappingQuoteStyle[2] = 'ENT_COMPAT'; - constMappingQuoteStyle[3] = 'ENT_QUOTES'; - - useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS'; - useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT'; - - if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') { - throw new Error("Table: "+useTable+' not supported'); - // return false; - } - - entities['38'] = '&'; - if (useTable === 'HTML_ENTITIES') { - entities['160'] = ' '; - entities['161'] = '¡'; - entities['162'] = '¢'; - entities['163'] = '£'; - entities['164'] = '¤'; - entities['165'] = '¥'; - entities['166'] = '¦'; - entities['167'] = '§'; - entities['168'] = '¨'; - entities['169'] = '©'; - entities['170'] = 'ª'; - entities['171'] = '«'; - entities['172'] = '¬'; - entities['173'] = '­'; - entities['174'] = '®'; - entities['175'] = '¯'; - entities['176'] = '°'; - entities['177'] = '±'; - entities['178'] = '²'; - entities['179'] = '³'; - entities['180'] = '´'; - entities['181'] = 'µ'; - entities['182'] = '¶'; - entities['183'] = '·'; - entities['184'] = '¸'; - entities['185'] = '¹'; - entities['186'] = 'º'; - entities['187'] = '»'; - entities['188'] = '¼'; - entities['189'] = '½'; - entities['190'] = '¾'; - entities['191'] = '¿'; - entities['192'] = 'À'; - entities['193'] = 'Á'; - entities['194'] = 'Â'; - entities['195'] = 'Ã'; - entities['196'] = 'Ä'; - entities['197'] = 'Å'; - entities['198'] = 'Æ'; - entities['199'] = 'Ç'; - entities['200'] = 'È'; - entities['201'] = 'É'; - entities['202'] = 'Ê'; - entities['203'] = 'Ë'; - entities['204'] = 'Ì'; - entities['205'] = 'Í'; - entities['206'] = 'Î'; - entities['207'] = 'Ï'; - entities['208'] = 'Ð'; - entities['209'] = 'Ñ'; - entities['210'] = 'Ò'; - entities['211'] = 'Ó'; - entities['212'] = 'Ô'; - entities['213'] = 'Õ'; - entities['214'] = 'Ö'; - entities['215'] = '×'; - entities['216'] = 'Ø'; - entities['217'] = 'Ù'; - entities['218'] = 'Ú'; - entities['219'] = 'Û'; - entities['220'] = 'Ü'; - entities['221'] = 'Ý'; - entities['222'] = 'Þ'; - entities['223'] = 'ß'; - entities['224'] = 'à'; - entities['225'] = 'á'; - entities['226'] = 'â'; - entities['227'] = 'ã'; - entities['228'] = 'ä'; - entities['229'] = 'å'; - entities['230'] = 'æ'; - entities['231'] = 'ç'; - entities['232'] = 'è'; - entities['233'] = 'é'; - entities['234'] = 'ê'; - entities['235'] = 'ë'; - entities['236'] = 'ì'; - entities['237'] = 'í'; - entities['238'] = 'î'; - entities['239'] = 'ï'; - entities['240'] = 'ð'; - entities['241'] = 'ñ'; - entities['242'] = 'ò'; - entities['243'] = 'ó'; - entities['244'] = 'ô'; - entities['245'] = 'õ'; - entities['246'] = 'ö'; - entities['247'] = '÷'; - entities['248'] = 'ø'; - entities['249'] = 'ù'; - entities['250'] = 'ú'; - entities['251'] = 'û'; - entities['252'] = 'ü'; - entities['253'] = 'ý'; - entities['254'] = 'þ'; - entities['255'] = 'ÿ'; - } - - if (useQuoteStyle !== 'ENT_NOQUOTES') { - entities['34'] = '"'; - } - if (useQuoteStyle === 'ENT_QUOTES') { - entities['39'] = '''; - } - entities['60'] = '<'; - entities['62'] = '>'; - - - // ascii decimals to real symbols - for (decimal in entities) { - symbol = String.fromCharCode(decimal); - hash_map[symbol] = entities[decimal]; - } - - return hash_map; - }, - unserialize: function (data) { - var that = this; - var utf8Overhead = function(chr) { - var code = chr.charCodeAt(0); - if (code < 0x0080) { - return 0; - } - if (code < 0x0800) { - return 1; - } - return 2; - }; - - - var error = function (type, msg, filename, line){throw new that.window[type](msg, filename, line);}; - var read_until = function (data, offset, stopchr){ - var buf = []; - var chr = data.slice(offset, offset + 1); - var i = 2; - while (chr != stopchr) { - if ((i+offset) > data.length) { - error('Error', 'Invalid'); - } - buf.push(chr); - chr = data.slice(offset + (i - 1),offset + i); - i += 1; - } - return [buf.length, buf.join('')]; - }; - var read_chrs = function (data, offset, length){ - var buf; - - buf = []; - for (var i = 0;i < length;i++){ - var chr = data.slice(offset + (i - 1),offset + i); - buf.push(chr); - length -= utf8Overhead(chr); - } - return [buf.length, buf.join('')]; - }; - var _unserialize = function (data, offset){ - var readdata; - var readData; - var chrs = 0; - var ccount; - var stringlength; - var keyandchrs; - var keys; - - if (!offset) {offset = 0;} - var dtype = (data.slice(offset, offset + 1)).toLowerCase(); - - var dataoffset = offset + 2; - var typeconvert = function(x) {return x;}; - - switch (dtype){ - case 'i': - typeconvert = function (x) {return parseInt(x, 10);}; - readData = read_until(data, dataoffset, ';'); - chrs = readData[0]; - readdata = readData[1]; - dataoffset += chrs + 1; - break; - case 'b': - typeconvert = function (x) {return parseInt(x, 10) !== 0;}; - readData = read_until(data, dataoffset, ';'); - chrs = readData[0]; - readdata = readData[1]; - dataoffset += chrs + 1; - break; - case 'd': - typeconvert = function (x) {return parseFloat(x);}; - readData = read_until(data, dataoffset, ';'); - chrs = readData[0]; - readdata = readData[1]; - dataoffset += chrs + 1; - break; - case 'n': - readdata = null; - break; - case 's': - ccount = read_until(data, dataoffset, ':'); - chrs = ccount[0]; - stringlength = ccount[1]; - dataoffset += chrs + 2; - - readData = read_chrs(data, dataoffset+1, parseInt(stringlength, 10)); - chrs = readData[0]; - readdata = readData[1]; - dataoffset += chrs + 2; - if (chrs != parseInt(stringlength, 10) && chrs != readdata.length){ - error('SyntaxError', 'String length mismatch'); - } - - // Length was calculated on an utf-8 encoded string - // so wait with decoding - readdata = that.utf8_decode(readdata); - break; - case 'a': - readdata = {}; - - keyandchrs = read_until(data, dataoffset, ':'); - chrs = keyandchrs[0]; - keys = keyandchrs[1]; - dataoffset += chrs + 2; - - for (var i = 0; i < parseInt(keys, 10); i++){ - var kprops = _unserialize(data, dataoffset); - var kchrs = kprops[1]; - var key = kprops[2]; - dataoffset += kchrs; - - var vprops = _unserialize(data, dataoffset); - var vchrs = vprops[1]; - var value = vprops[2]; - dataoffset += vchrs; - - readdata[key] = value; - } - - dataoffset += 1; - break; - default: - error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype); - break; - } - return [dtype, dataoffset - offset, typeconvert(readdata)]; - }; - - return D3.var_dump(_unserialize((data+''), 0)[2]); - }, - utf8_encode: function ( argString ) { - var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n"); - - var utftext = ""; - var start, end; - var stringl = 0; - - start = end = 0; - stringl = string.length; - for (var n = 0; n < stringl; n++) { - var c1 = string.charCodeAt(n); - var enc = null; - - if (c1 < 128) { - end++; - } else if (c1 > 127 && c1 < 2048) { - enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128); - } else { - enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128); - } - if (enc !== null) { - if (end > start) { - utftext += string.substring(start, end); - } - utftext += enc; - start = end = n+1; - } - } - - if (end > start) { - utftext += string.substring(start, string.length); - } - - return utftext; - }, - utf8_decode: function ( str_data ) { - var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; - - str_data += ''; - - while ( i < str_data.length ) { - c1 = str_data.charCodeAt(i); - if (c1 < 128) { - tmp_arr[ac++] = String.fromCharCode(c1); - i++; - } else if ((c1 > 191) && (c1 < 224)) { - c2 = str_data.charCodeAt(i+1); - tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = str_data.charCodeAt(i+1); - c3 = str_data.charCodeAt(i+2); - tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - - return tmp_arr.join(''); - }, - - /** - * Concatenates the values of a variable into an easily readable string - * by Matt Hackett [scriptnode.com] - * @param {Object} x The variable to debug - * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10] - * @param {String} sep The separator to use between [default: a single space ' '] - * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use - */ - var_dump: function (x, max, sep, l) { - - l = l || 0; - max = max || 10; - sep = sep || ' '; - - if (l > max) { - return "[WARNING: Too much recursion]\n"; - } - - var - i, - r = '', - t = typeof x, - tab = ''; - - if (x === null) { - r += "(null)\n"; - } else if (t == 'object') { - - l++; - - for (i = 0; i < l; i++) { - tab += sep; - } - - if (x && x.length) { - t = 'array'; - } - - r += '(' + t + ") :\n"; - - for (i in x) { - try { - r += tab + '[' + i + '] : ' + D3.var_dump(x[i], max, sep, (l + 1)); - } catch(e) { - return "[ERROR: " + e + "]\n"; - } - } - - } else { - - if (t == 'string') { - if (x == '') { - x = '(empty)'; - } - } - - r += '(' + t + ') ' + x + "\n"; - - } - - return r; - - }, - - menus: false, - - menuLoadTime: 1000, - - createContextMenu: function() { - var changed = false, - createMenu = function(name, info, ptFunction) { - var menu; - - if(localStorage.getItem("functions_" + name) == '1' && !D3.menuIds[name]) { - menu = { - "title" : info, - "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup(info, ptFunction(info.selectionText));} - }; - - D3.menuIds[name]=chrome.contextMenus.create(menu); - changed = true; - } else if(localStorage.getItem("functions_" + name) == '0' && D3.menuIds[name]) { - console.log(D3.menuIds[name]); - chrome.contextMenus.remove(D3.menuIds[name]); - D3.menuIds[name] == null; - } - }; - - D3.menus = true; - - /** - * MENU ITEM DEFINITIONS - */ - createMenu('rot13', 'Rot13 Decode', D3.rot13decode); - createMenu('timestamp', 'Unix timestamp to date conversion', D3.timestampToDate); - createMenu('bin2hex', 'bin2hex', D3.bin2hex); - createMenu('bin2txt', 'bin2txt', D3.bin2txt); - createMenu('uri_encode', 'URI encode', D3.uri_encode); - createMenu('uri_decode', 'URI decode', D3.uri_decode); - createMenu('htmlentities', 'HTML entities', D3.htmlentities); - createMenu('html_entity_decode', 'HTML entity decode', D3.html_entity_decode); - createMenu('htmlspecialchars', 'HTML specialchars', D3.htmlspecialchars); - createMenu('htmlspecialchars_decode', 'HTML specialchars decode', D3.htmlspecialchars_decode); - createMenu('md5', 'MD5', D3.md5); - createMenu('sha1', 'SHA1', D3.sha1); - createMenu('crc32', 'CRC32', D3.crc32); - createMenu('quoted_printable_decode', 'Quoted printable decode', D3.quoted_printable_decode); - createMenu('quoted_printable_encode', 'Quoted printable encode', D3.quoted_printable_encode); - createMenu('escapeshellarg', 'Escapeshellarg', D3.escapeshellarg); - createMenu('base64_encode', 'Base64 encode', D3.base64_encode); - createMenu('base64_decode', 'Base64 decode', D3.base64_decode); - createMenu('unserialize', 'Unserialize', D3.unserialize); - createMenu('leet_encode', 'L33T Encode', D3.leetEncode); - createMenu('leet_decode', 'L33T Decode', D3.leetDecode); - createMenu('reverse', 'Reverse text', D3.reverseText); - - if (changed === true && D3.menuIds["options"]) { - chrome.contextMenus.remove(D3.menuIds['options']); - D3.menuIds["options"] = null; - } - - if (!D3.menuIds["options"]) { - // Menu item for options - menu = { - "title" : "d3coder options", - "contexts" : ["all"], - "onclick" : function(info, tab) {chrome.tabs.create({url:"html/menu.html"});} - } - - D3.menuIds["options"]=chrome.contextMenus.create(menu); - } - } -}; From e6e00c2f5f350940a3e861d8040a142e4cb2de69 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sun, 14 Apr 2013 11:15:04 -0700 Subject: [PATCH 34/61] Updated gitignore for editor tmp files --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ef7fd7e..6bba022 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .settings .settings/* -.project \ No newline at end of file +.project +*~ From 53fd9861d170336a9f1d9efbd1b33a4a48d0d5a1 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sun, 14 Apr 2013 11:16:51 -0700 Subject: [PATCH 35/61] Fixed broken info text display --- js/D3.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/js/D3.js b/js/D3.js index 3eedcde..7fba5f6 100644 --- a/js/D3.js +++ b/js/D3.js @@ -1276,23 +1276,23 @@ var D3 = createContextMenu: function() { var changed = false, - createMenu = function(name, info, ptFunction) { + createMenu = function(name, infotext, ptFunction) { var menu; if(localStorage.getItem("functions_" + name) == '1' && !D3.menuIds[name]) { menu = { - "title" : info, + "title" : infotext, "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup(info, ptFunction(info.selectionText));} + "onclick" : function(info, tab){D3.createPopup(infotext, ptFunction(info.selectionText));} }; D3.menuIds[name]=chrome.contextMenus.create(menu); menu = { - "title" : info, + "title" : infotext, "contexts" : ["page"], "onclick" : function(info, tab){ var clipboardText = 'this could be from clipboard'; - D3.createPopup(info, ptFunction(clipboardText));} + D3.createPopup(infotext, ptFunction(clipboardText));} }; D3.menuIds[name]=chrome.contextMenus.create(menu); From 1228f8d957e06a1ae49b2bf67942f7de13f65234 Mon Sep 17 00:00:00 2001 From: MKzero Date: Sun, 14 Apr 2013 14:27:41 -0700 Subject: [PATCH 36/61] Added new menu for in-clipboard-conversion --- js/D3.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/js/D3.js b/js/D3.js index 7fba5f6..9377405 100644 --- a/js/D3.js +++ b/js/D3.js @@ -1280,19 +1280,34 @@ var D3 = var menu; if(localStorage.getItem("functions_" + name) == '1' && !D3.menuIds[name]) { + // Menu for selected text menu = { "title" : infotext, "contexts" : ["selection", "editable"], - "onclick" : function(info, tab){D3.createPopup(infotext, ptFunction(info.selectionText));} + "onclick" : function (info, tab) { + D3.createPopup(infotext, ptFunction(info.selectionText)); + } }; D3.menuIds[name]=chrome.contextMenus.create(menu); + // Menu for normal page menu = { "title" : infotext, "contexts" : ["page"], - "onclick" : function(info, tab){ - var clipboardText = 'this could be from clipboard'; - D3.createPopup(infotext, ptFunction(clipboardText));} + "onclick" : function (info, tab) { + + var bg = chrome.extension.getBackgroundPage(), + clipboard = bg.document.getElementById("clipboard"), + clipboardText; + + clipboard.style.display = "block"; + clipboard.select(); + bg.document.execCommand("Paste"); + clipboardText = clipboard.value; + clipboard.style.display = "none"; + + D3.copyToClipboard(ptFunction(clipboardText)); + } }; D3.menuIds[name]=chrome.contextMenus.create(menu); From cfa8491724aa971f71e2a894204727b40db76e4e Mon Sep 17 00:00:00 2001 From: MKzero Date: Sun, 14 Apr 2013 15:11:02 -0700 Subject: [PATCH 37/61] Updated README --- README.md | 5 ++++- manifest.json~ | 29 ----------------------------- 2 files changed, 4 insertions(+), 30 deletions(-) delete mode 100644 manifest.json~ diff --git a/README.md b/README.md index 4ad6938..b57c548 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ CHANGELOG ============================= +1.3.0 +Feature: New menu for direct in-clipboard-conversion + 1.2.6 -Fix for broken context menu customization +Bugfix: Problems with context menu customization 1.2.5 1.2.4 diff --git a/manifest.json~ b/manifest.json~ deleted file mode 100644 index 24fcb0d..0000000 --- a/manifest.json~ +++ /dev/null @@ -1,29 +0,0 @@ -{ - "manifest_version": 2, - "name": "d3coder", - "version": "1.2.6", - "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", - "options_page": "html/menu.html", - "permissions": [ - "contextMenus", - "notifications", - "tabs", - "*://*/*", - "clipboardWrite", - "clipboardRead" - ], - "background": { - "page": "html/background.html" - }, - "icons": { - "16": "images/icon16.png", - "48": "images/icon48.png", - "128": "images/icon128.png" }, - "content_scripts": [ - { - "matches": ["*://*/*"], - "css": ["styles/content.css"], - "js": ["js/mootools.js", "js/contentWorker.js"], - "all_frames": true - }] -} From 57dfc94c81f555ae870a1f58b2547e4a6c5a8975 Mon Sep 17 00:00:00 2001 From: MKzero Date: Mon, 15 Apr 2013 15:26:23 +0200 Subject: [PATCH 38/61] Removed library --- js/mootools.js | 1225 ------------------------------------------------ 1 file changed, 1225 deletions(-) delete mode 100644 js/mootools.js diff --git a/js/mootools.js b/js/mootools.js deleted file mode 100644 index c03d9f2..0000000 --- a/js/mootools.js +++ /dev/null @@ -1,1225 +0,0 @@ -/* ---- -MooTools: the javascript framework - -web build: - - http://mootools.net/core/7c56cfef9dddcf170a5d68e3fb61cfd7 - -packager build: - - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff - -copyrights: - - [MooTools](http://mootools.net) - -licenses: - - [MIT License](http://mootools.net/license.txt) -... -*/ -(function(){this.MooTools={version:"1.3",build:"a3eed692dd85050d80168ec2c708efe901bb7db3"};var n=this.typeOf=function(i){if(i==null){return"null";}if(i.$family){return i.$family(); -}if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments"; -}if("item" in i){return"collection";}}}return typeof i;};var h=this.instanceOf=function(s,i){if(s==null){return false;}var r=s.$constructor||s.constructor; -while(r){if(r===i){return true;}r=r.parent;}return s instanceof i;};var f=this.Function;var o=true;for(var j in {toString:1}){o=null;}if(o){o=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]; -}f.prototype.overloadSetter=function(r){var i=this;return function(t,s){if(t==null){return this;}if(r||typeof t!="string"){for(var u in t){i.call(this,u,t[u]); -}if(o){for(var v=o.length;v--;){u=o[v];if(t.hasOwnProperty(u)){i.call(this,u,t[u]);}}}}else{i.call(this,t,s);}return this;};};f.prototype.overloadGetter=function(r){var i=this; -return function(t){var u,s;if(r||typeof t!="string"){u=t;}else{if(arguments.length>1){u=arguments;}}if(u){s={};for(var v=0;v-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim(); -},camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase()); -});},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1"); -},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); -return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1); -}return(a[c]!=null)?a[c]:"";});}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0).toFixed(a<0?-a:0); -return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a1)?Array.slice(arguments,1):null;return function(){if(!b&&!arguments.length){return a.call(c);}if(b&&arguments.length){return a.apply(c,b.concat(Array.from(arguments))); -}return a.apply(c,b||arguments);};},pass:function(b,c){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},delay:function(b,c,a){return setTimeout(this.pass(a,c),b); -},periodical:function(c,b,a){return setInterval(this.pass(a,b),c);}});Object.extend({subset:function(c,f){var e={};for(var d=0,a=f.length;d]*>([\s\S]*?)<\/script>/gi,function(r,s){e+=s+"\n"; -return"";});if(p===true){o.exec(e);}else{if(typeOf(p)=="function"){p(e,q);}}return q;});o.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event}); -this.Window=this.$constructor=new Type("Window",function(){});this.$family=Function.from("window").hide();Window.mirror(function(e,p){i[e]=p;});this.Document=k.$constructor=new Type("Document",function(){}); -k.$family=Function.from("document").hide();Document.mirror(function(e,p){k[e]=p;});k.html=k.documentElement;k.head=k.getElementsByTagName("head")[0];if(k.execCommand){try{k.execCommand("BackgroundImageCache",false,true); -}catch(g){}}if(this.attachEvent&&!this.addEventListener){var d=function(){this.detachEvent("onunload",d);k.head=k.html=k.window=null;};this.attachEvent("onunload",d); -}var m=Array.from;try{m(k.html.childNodes);}catch(g){Array.from=function(p){if(typeof p!="string"&&Type.isEnumerable(p)&&typeOf(p)!="array"){var e=p.length,q=new Array(e); -while(e--){q[e]=p[e];}return q;}return m(p);};var l=Array.prototype,n=l.slice;["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice"].each(function(e){var p=l[e]; -Array[e]=function(q){return p.apply(Array.from(q),n.call(arguments,1));};});}})();var Event=new Type("Event",function(a,i){if(!i){i=window;}var o=i.document; -a=a||i.event;if(a.$extended){return a;}this.$extended=true;var n=a.type,k=a.target||a.srcElement,m={},c={};while(k&&k.nodeType==3){k=k.parentNode;}if(n.indexOf("key")!=-1){var b=a.which||a.keyCode; -var q=Object.keyOf(Event.Keys,b);if(n=="keydown"){var d=b-111;if(d>0&&d<13){q="f"+d;}}if(!q){q=String.fromCharCode(b).toLowerCase();}}else{if(n.test(/click|mouse|menu/i)){o=(!o.compatMode||o.compatMode=="CSS1Compat")?o.html:o.body; -m={x:(a.pageX!=null)?a.pageX:a.clientX+o.scrollLeft,y:(a.pageY!=null)?a.pageY:a.clientY+o.scrollTop};c={x:(a.pageX!=null)?a.pageX-i.pageXOffset:a.clientX,y:(a.pageY!=null)?a.pageY-i.pageYOffset:a.clientY}; -if(n.test(/DOMMouseScroll|mousewheel/)){var l=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}var h=(a.which==3)||(a.button==2),p=null;if(n.test(/over|out/)){p=a.relatedTarget||a[(n=="mouseover"?"from":"to")+"Element"]; -var j=function(){while(p&&p.nodeType==3){p=p.parentNode;}return true;};var g=(Browser.firefox2)?j.attempt():j();p=(g)?p:null;}}else{if(n.test(/gesture|touch/i)){this.rotation=a.rotation; -this.scale=a.scale;this.targetTouches=a.targetTouches;this.changedTouches=a.changedTouches;var f=this.touches=a.touches;if(f&&f[0]){var e=f[0];m={x:e.pageX,y:e.pageY}; -c={x:e.clientX,y:e.clientY};}}}}return Object.append(this,{event:a,type:n,page:m,client:c,rightClick:h,wheel:l,relatedTarget:document.id(p),target:document.id(k),code:b,key:q,shift:a.shiftKey,control:a.ctrlKey,alt:a.altKey,meta:a.metaKey}); -});Event.Keys={enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46};Event.implement({stop:function(){return this.stopPropagation().preventDefault(); -},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault(); -}else{this.event.returnValue=false;}return this;}});(function(){var a=this.Class=new Type("Class",function(h){if(instanceOf(h,Function)){h={initialize:h}; -}var g=function(){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null; -return i;}.extend(this).implement(h);g.$constructor=a;g.prototype.$constructor=g;g.prototype.parent=c;return g;});var c=function(){if(!this.$caller){throw new Error('The method "parent" cannot be called.'); -}var g=this.$caller.$name,h=this.$caller.$owner.parent,i=(h)?h.prototype[g]:null;if(!i){throw new Error('The method "'+g+'" has no parent.');}return i.apply(this,arguments); -};var e=function(g){for(var h in g){var j=g[h];switch(typeOf(j)){case"object":var i=function(){};i.prototype=j;g[h]=e(new i);break;case"array":g[h]=j.clone(); -break;}}return g;};var b=function(g,h,j){if(j.$origin){j=j.$origin;}var i=function(){if(j.$protected&&this.$caller==null){throw new Error('The method "'+h+'" cannot be called.'); -}var l=this.caller,m=this.$caller;this.caller=m;this.$caller=i;var k=j.apply(this,arguments);this.$caller=m;this.caller=l;return k;}.extend({$owner:g,$origin:j,$name:h}); -return i;};var f=function(h,i,g){if(a.Mutators.hasOwnProperty(h)){i=a.Mutators[h].call(this,i);if(i==null){return this;}}if(typeOf(i)=="function"){if(i.$hidden){return this; -}this.prototype[h]=(g)?i:b(this,h,i);}else{Object.merge(this.prototype,h,i);}return this;};var d=function(g){g.$prototyping=true;var h=new g;delete g.$prototyping; -return h;};a.implement("implement",f.overloadSetter());a.Mutators={Extends:function(g){this.parent=g;this.prototype=d(g);},Implements:function(g){Array.from(g).each(function(j){var h=new j; -for(var i in h){f.call(this,i,h[i],true);}},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments)); -return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty(); -return this;}});var a=function(b){return b.replace(/^on([A-Z])/,function(c,d){return d.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(d,c,b){d=a(d); -this.$events[d]=(this.$events[d]||[]).include(c);if(b){c.internal=true;}return this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);}return this; -},fireEvent:function(e,c,b){e=a(e);var d=this.$events[e];if(!d){return this;}c=Array.from(c);d.each(function(f){if(b){f.delay(b,this,c);}else{f.apply(this,c); -}},this);return this;},removeEvent:function(e,d){e=a(e);var c=this.$events[e];if(c&&!d.internal){var b=c.indexOf(d);if(b!=-1){delete c[b];}}return this; -},removeEvents:function(d){var e;if(typeOf(d)=="object"){for(e in d){this.removeEvent(e,d[e]);}return this;}if(d){d=a(d);}for(e in this.$events){if(d&&d!=e){continue; -}var c=this.$events[e];for(var b=c.length;b--;){this.removeEvent(e,c[b]);}}return this;}});this.Options=new Class({setOptions:function(){var b=this.options=Object.merge.apply(null,[{},this.options].append(arguments)); -if(!this.addEvent){return this;}for(var c in b){if(typeOf(b[c])!="function"||!(/^on[A-Z]/).test(c)){continue;}this.addEvent(c,b[c]);delete b[c];}return this; -}});})();(function(){var k,n,l,g,a={},c={},m=/\\/g;var e=function(q,p){if(q==null){return null;}if(q.Slick===true){return q;}q=(""+q).replace(/^\s+|\s+$/g,""); -g=!!p;var o=(g)?c:a;if(o[q]){return o[q];}k={Slick:true,expressions:[],raw:q,reverse:function(){return e(this.raw,true);}};n=-1;while(q!=(q=q.replace(j,b))){}k.length=k.expressions.length; -return o[q]=(g)?h(k):k;};var i=function(o){if(o==="!"){return" ";}else{if(o===" "){return"!";}else{if((/^!/).test(o)){return o.replace(/^!/,"");}else{return"!"+o; -}}}};var h=function(u){var r=u.expressions;for(var p=0;p+)\\s*|(\\s+)|(+|\\*)|\\#(+)|\\.(+)|\\[\\s*(+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|:+(+)(?:\\((?:(?:([\"'])([^\\12]*)\\12)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(//,"["+f(">+~`!@$%^&={}\\;/g,"(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])").replace(//g,"(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])")); -function b(x,s,D,z,r,C,q,B,A,y,u,F,v,p,w){if(s||n===-1){k.expressions[++n]=[];l=-1;if(s){return"";}}if(D||z||l===-1){D=D||" ";var t=k.expressions[n];if(g&&t[l]){t[l].reverseCombinator=i(D); -}t[++l]={combinator:D,tag:"*"};}var o=k.expressions[n][l];if(r){o.tag=r.replace(m,"");}else{if(C){o.id=C.replace(m,"");}else{if(q){q=q.replace(m,"");if(!o.classList){o.classList=[]; -}if(!o.classes){o.classes=[];}o.classList.push(q);o.classes.push({value:q,regexp:new RegExp("(^|\\s)"+f(q)+"(\\s|$)")});}else{if(F){w=w||p;w=w?w.replace(m,""):null; -if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:F.replace(m,""),value:w});}else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,G;switch(A){case"^=":G=new RegExp("^"+f(u)); -break;case"$=":G=new RegExp(f(u)+"$");break;case"~=":G=new RegExp("(^|\\s)"+f(u)+"(\\s|$)");break;case"|=":G=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(H){return u==H; -};break;case"*=":E=function(H){return H&&H.indexOf(u)>-1;};break;case"!=":E=function(H){return u!=H;};break;default:E=function(H){return !!H;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false; -};}if(!E){E=function(H){return H&&G.test(H);};}if(!o.attributes){o.attributes=[];}o.attributes.push({key:B,operator:A,value:u,test:E});}}}}}return"";}var d=(this.Slick||{}); -d.parse=function(o){return e(o);};d.escapeRegExp=f;if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);(function(){var b={}; -b.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};b.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(Object.prototype.toString.call(c)==="[object XMLDocument]")||(c.nodeType===9&&c.documentElement.nodeName!=="HTML"); -};b.setDocument=function(n){if(n.nodeType===9){}else{if(n.ownerDocument){n=n.ownerDocument;}else{if(n.navigator){n=n.document;}else{return;}}}if(this.document===n){return; -}this.document=n;var o=this.root=n.documentElement;this.isXMLDocument=this.isXML(n);this.brokenStarGEBTN=this.starSelectsClosedQSA=this.idGetsName=this.brokenMixedCaseQSA=this.brokenGEBCN=this.brokenCheckedQSA=this.brokenEmptyAttributeQSA=this.isHTMLDocument=false; -var i,j,p,k;var l,c;var q=n.createElement("div");o.appendChild(q);try{c="slick_getbyid_test";q.innerHTML='';this.isHTMLDocument=!!n.getElementById(c); -}catch(m){}if(this.isHTMLDocument){q.style.display="none";q.appendChild(n.createComment(""));j=(q.getElementsByTagName("*").length>0);try{q.innerHTML="foo"; -l=q.getElementsByTagName("*");i=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}this.brokenStarGEBTN=j||i;if(q.querySelectorAll){try{q.innerHTML="foo"; -l=q.querySelectorAll("*");this.starSelectsClosedQSA=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}}try{c="slick_id_gets_name";q.innerHTML=''; -this.idGetsName=n.getElementById(c)===q.firstChild;}catch(m){}try{q.innerHTML='';this.brokenMixedCaseQSA=!q.querySelectorAll(".MiXedCaSe").length; -}catch(m){}try{q.innerHTML='';q.getElementsByClassName("b").length;q.firstChild.className="b";k=(q.getElementsByClassName("b").length!=2); -}catch(m){}try{q.innerHTML='';p=(q.getElementsByClassName("a").length!=2);}catch(m){}this.brokenGEBCN=k||p;try{q.innerHTML=''; -this.brokenCheckedQSA=(q.querySelectorAll(":checked").length==0);}catch(m){}try{q.innerHTML='';this.brokenEmptyAttributeQSA=(q.querySelectorAll('[class*=""]').length!=0); -}catch(m){}}o.removeChild(q);q=null;this.hasAttribute=(o&&this.isNativeCode(o.hasAttribute))?function(s,r){return s.hasAttribute(r);}:function(s,r){s=s.getAttributeNode(r); -return !!(s&&(s.specified||s.nodeValue));};this.contains=(o&&this.isNativeCode(o.contains))?function(r,s){return r.contains(s);}:(o&&o.compareDocumentPosition)?function(r,s){return r===s||!!(r.compareDocumentPosition(s)&16); -}:function(r,s){if(s){do{if(s===r){return true;}}while((s=s.parentNode));}return false;};this.documentSorter=(o.compareDocumentPosition)?function(s,r){if(!s.compareDocumentPosition||!r.compareDocumentPosition){return 0; -}return s.compareDocumentPosition(r)&4?-1:s===r?0:1;}:("sourceIndex" in o)?function(s,r){if(!s.sourceIndex||!r.sourceIndex){return 0;}return s.sourceIndex-r.sourceIndex; -}:(n.createRange)?function(u,s){if(!u.ownerDocument||!s.ownerDocument){return 0;}var t=u.ownerDocument.createRange(),r=s.ownerDocument.createRange();t.setStart(u,0); -t.setEnd(u,0);r.setStart(s,0);r.setEnd(s,0);return t.compareBoundaryPoints(Range.START_TO_END,r);}:null;this.getUID=(this.isHTMLDocument)?this.getUIDHTML:this.getUIDXML; -};b.search=function(k,x,F,q){var w=this.found=(q)?null:(F||[]);if(!k){return w;}if(k.navigator){k=k.document;}else{if(!k.nodeType){return w;}}var t,E;var o=this.uniques={}; -if(this.document!==(k.ownerDocument||k)){this.setDocument(k);}var y=!!(F&&F.length);if(y){for(E=w.length;E--;){this.uniques[this.getUID(w[E])]=true;}}if(typeof x=="string"){for(E=this.overrides.length; -E--;){var u=this.overrides[E];if(u.regexp.test(x)){var v=u.method.call(k,x,w,q);if(v===false){continue;}if(v===true){return w;}return v;}}t=this.Slick.parse(x); -if(!t.length){return w;}}else{if(x==null){return w;}else{if(x.Slick){t=x;}else{if(this.contains(k.documentElement||k,x)){(w)?w.push(x):w=x;return w;}else{return w; -}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!y&&(q||(t.length==1&&t.expressions[0].length==1)))?this.pushArray:this.pushUID; -if(w==null){w=[];}var D,B,A;var C,K,z,J,G,s,p;var r,l,c,H,I=t.expressions;search:for(E=0;(l=I[E]);E++){for(D=0;(c=l[D]);D++){C="combinator:"+c.combinator; -if(!this[C]){continue search;}K=(this.isXMLDocument)?c.tag:c.tag.toUpperCase();z=c.id;J=c.classList;G=c.classes;s=c.attributes;p=c.pseudos;H=(D===(l.length-1)); -this.bitUniques={};if(H){this.uniques=o;this.found=w;}else{this.uniques={};this.found=[];}if(D===0){this[C](k,K,z,G,s,p,J);if(q&&H&&w.length){break search; -}}else{if(q&&H){for(B=0,A=r.length;B1)){this.sort(w);}return(q)?(w[0]||null):w;};b.uidx=1;b.uidk="slick:uniqueid";b.getUIDXML=function(i){var c=i.getAttribute(this.uidk); -if(!c){c=this.uidx++;i.setAttribute(this.uidk,c);}return c;};b.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};b.sort=function(c){if(!this.documentSorter){return c; -}c.sort(this.documentSorter);return c;};b.cacheNTH={};b.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;b.parseNTHArgument=function(l){var j=l.match(this.matchNTH); -if(!j){return false;}var k=j[2]||false;var i=j[1]||1;if(i=="-"){i=-1;}var c=+j[3]||0;j=(k=="n")?{a:i,b:c}:(k=="odd")?{a:2,b:1}:(k=="even")?{a:2,b:0}:{a:0,b:i}; -return(this.cacheNTH[l]=j);};b.createNTHPseudo=function(k,i,c,j){return function(n,l){var p=this.getUID(n);if(!this[c][p]){var v=n.parentNode;if(!v){return false; -}var m=v[k],o=1;if(j){var u=n.nodeName;do{if(m.nodeName!==u){continue;}this[c][this.getUID(m)]=o++;}while((m=m[i]));}else{do{if(m.nodeType!==1){continue; -}this[c][this.getUID(m)]=o++;}while((m=m[i]));}}l=l||"n";var q=this.cacheNTH[l]||this.parseNTHArgument(l);if(!q){return false;}var t=q.a,s=q.b,r=this[c][p]; -if(t==0){return s==r;}if(t>0){if(r":function(k,c,m,j,i,l){if((k=k.firstChild)){do{if(k.nodeType===1){this.push(k,c,m,j,i,l);}}while((k=k.nextSibling)); -}},"+":function(k,c,m,j,i,l){while((k=k.nextSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break;}}},"^":function(k,c,m,j,i,l){k=k.firstChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l); -}else{this["combinator:+"](k,c,m,j,i,l);}}},"~":function(l,c,n,k,i,m){while((l=l.nextSibling)){if(l.nodeType!==1){continue;}var j=this.getUID(l);if(this.bitUniques[j]){break; -}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}},"++":function(k,c,m,j,i,l){this["combinator:+"](k,c,m,j,i,l);this["combinator:!+"](k,c,m,j,i,l);},"~~":function(k,c,m,j,i,l){this["combinator:~"](k,c,m,j,i,l); -this["combinator:!~"](k,c,m,j,i,l);},"!":function(k,c,m,j,i,l){while((k=k.parentNode)){if(k!==this.document){this.push(k,c,m,j,i,l);}}},"!>":function(k,c,m,j,i,l){k=k.parentNode; -if(k!==this.document){this.push(k,c,m,j,i,l);}},"!+":function(k,c,m,j,i,l){while((k=k.previousSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break; -}}},"!^":function(k,c,m,j,i,l){k=k.lastChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l);}else{this["combinator:!+"](k,c,m,j,i,l);}}},"!~":function(l,c,n,k,i,m){while((l=l.previousSibling)){if(l.nodeType!==1){continue; -}var j=this.getUID(l);if(this.bitUniques[j]){break;}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}}};for(var h in a){b["combinator:"+h]=a[h];}var g={empty:function(c){var i=c.firstChild; -return !(i&&i.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,i){return !this.matchNode(c,i);},contains:function(c,i){return(c.innerText||c.textContent||"").indexOf(i)>-1; -},"first-child":function(c){while((c=c.previousSibling)){if(c.nodeType===1){return false;}}return true;},"last-child":function(c){while((c=c.nextSibling)){if(c.nodeType===1){return false; -}}return true;},"only-child":function(j){var i=j;while((i=i.previousSibling)){if(i.nodeType===1){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeType===1){return false; -}}return true;},"nth-child":b.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":b.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":b.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":b.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(i,c){return this["pseudo:nth-child"](i,""+c+1); -},even:function(i,c){return this["pseudo:nth-child"](i,"2n");},odd:function(i,c){return this["pseudo:nth-child"](i,"2n+1");},"first-of-type":function(c){var i=c.nodeName; -while((c=c.previousSibling)){if(c.nodeName===i){return false;}}return true;},"last-of-type":function(c){var i=c.nodeName;while((c=c.nextSibling)){if(c.nodeName===i){return false; -}}return true;},"only-of-type":function(j){var i=j,k=j.nodeName;while((i=i.previousSibling)){if(i.nodeName===k){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeName===k){return false; -}}return true;},enabled:function(c){return(c.disabled===false);},disabled:function(c){return(c.disabled===true);},checked:function(c){return c.checked||c.selected; -},focus:function(c){return this.isHTMLDocument&&this.document.activeElement===c&&(c.href||c.type||this.hasAttribute(c,"tabindex"));},root:function(c){return(c===this.root); -},selected:function(c){return c.selected;}};for(var d in g){b["pseudo:"+d]=g[d];}b.attributeGetters={"class":function(){return("className" in this)?this.className:this.getAttribute("class"); -},"for":function(){return("htmlFor" in this)?this.htmlFor:this.getAttribute("for");},href:function(){return("href" in this)?this.getAttribute("href",2):this.getAttribute("href"); -},style:function(){return(this.style)?this.style.cssText:this.getAttribute("style");}};b.getAttribute=function(j,c){var k=this.attributeGetters[c];if(k){return k.call(j); -}var i=j.getAttributeNode(c);return i?i.nodeValue:null;};b.overrides=[];b.override=function(c,i){this.overrides.push({regexp:c,method:i});};var f=/\[.*[*$^]=(?:["']{2})?\]/; -b.override(/./,function(p,n,o){if(!this.querySelectorAll||this.nodeType!=9||!b.isHTMLDocument||b.brokenMixedCaseQSA||(b.brokenCheckedQSA&&p.indexOf(":checked")>-1)||(b.brokenEmptyAttributeQSA&&f.test(p))||e.disableQSA){return false; -}var j,m;try{if(o){return this.querySelector(p)||null;}else{j=this.querySelectorAll(p);}}catch(k){return false;}var l,c=!!(n.length);if(b.starSelectsClosedQSA){for(l=0; -m=j[l++];){if(m.nodeName>"@"&&(!c||!b.uniques[b.getUIDHTML(m)])){n.push(m);}}}else{for(l=0;m=j[l++];){if(!c||!b.uniques[b.getUIDHTML(m)]){n.push(m);}}}if(c){b.sort(n); -}return true;});b.override(/^[\w-]+$|^\*$/,function(p,n,o){var j=p;if(j=="*"&&b.brokenStarGEBTN){return false;}var k=this.getElementsByTagName(j);if(o){return k[0]||null; -}var l,m,c=!!(n.length);for(l=0;m=k[l++];){if(!c||!b.uniques[b.getUID(m)]){n.push(m);}}if(c){b.sort(n);}return true;});b.override(/^\.[\w-]+$/,function(o,q,m){if(!b.isHTMLDocument||(!this.getElementsByClassName&&this.querySelectorAll)){return false; -}var c,k,l,j=!!(q&&q.length),p=o.substring(1);if(this.getElementsByClassName&&!b.brokenGEBCN){c=this.getElementsByClassName(p);if(m){return c[0]||null; -}for(l=0;k=c[l++];){if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}else{var n=new RegExp("(^|\\s)"+e.escapeRegExp(p)+"(\\s|$)");c=this.getElementsByTagName("*"); -for(l=0;k=c[l++];){p=k.className;if(!p||!n.test(p)){continue;}if(m){return k;}if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}if(j){b.sort(q);}return(m)?null:true; -});b.override(/^#[\w-]+$/,function(l,j,k){if(!b.isHTMLDocument||this.nodeType!=9){return false;}var m=l.substring(1),i=this.getElementById(m);if(!i){return j; -}if(b.idGetsName&&i.getAttributeNode("id").nodeValue!=m){return false;}if(k){return i||null;}var c=!!(j.length);if(!c||!b.uniques[b.getUIDHTML(i)]){j.push(i); -}if(c){b.sort(j);}return true;});if(typeof document!="undefined"){b.setDocument(document);}var e=b.Slick=(this.Slick||{});e.version="0.9dev";e.search=function(i,j,c){return b.search(i,j,c); -};e.find=function(c,i){return b.search(c,i,null,true);};e.contains=function(c,i){b.setDocument(c);return b.contains(c,i);};e.getAttribute=function(i,c){return b.getAttribute(i,c); -};e.match=function(i,c){if(!(i&&c)){return false;}if(!c||c===i){return true;}if(typeof c!="string"){return false;}b.setDocument(i);return b.matchNode(i,c); -};e.defineAttributeGetter=function(c,i){b.attributeGetters[c]=i;return this;};e.lookupAttributeGetter=function(c){return b.attributeGetters[c];};e.definePseudo=function(c,i){b["pseudo:"+c]=function(k,j){return i.call(k,j); -};return this;};e.lookupPseudo=function(c){var i=b["pseudo:"+c];if(i){return function(j){return i.call(this,j);};}return null;};e.override=function(i,c){b.override(i,c); -return this;};e.isXML=b.isXML;e.uidOf=function(c){return b.getUIDHTML(c);};if(!this.Slick){this.Slick=e;}}).apply((typeof exports!="undefined")?exports:this); -var Element=function(b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!b.test(/^[\w-]+$/)){var e=Slick.parse(b).expressions[0][0]; -b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var f=0,c=d.length;f=this.length){delete this[e--];}return this; -}.protect());}Elements.implement(Array.prototype);Array.mirror(Elements);var f;try{var a=document.createElement("");f=(a.name=="x");}catch(c){}var d=function(e){return(""+e).replace(/&/g,"&").replace(/"/g,"""); -};Document.implement({newElement:function(e,h){if(h&&h.checked!=null){h.defaultChecked=h.checked;}if(f&&h){e="<"+e;if(h.name){e+=' name="'+d(h.name)+'"'; -}if(h.type){e+=' type="'+d(h.type)+'"';}e+=">";delete h.name;delete h.type;}return this.id(this.createElement(e)).set(h);}});})();Document.implement({newTextNode:function(a){return this.createTextNode(a); -},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var a={string:function(d,c,b){d=Slick.find(b,"#"+d.replace(/(\W)/g,"\\$1")); -return(d)?a.element(d,c):null;},element:function(b,c){$uid(b);if(!c&&!b.$family&&!(/^object|embed$/i).test(b.tagName)){Object.append(b,Element.Prototype); -}return b;},object:function(c,d,b){if(c.toElement){return a.element(c.toElement(b),d);}return null;}};a.textnode=a.whitespace=a.window=a.document=function(b){return b; -};return function(c,e,d){if(c&&c.$family&&c.uid){return c;}var b=typeOf(c);return(a[b])?a[b](c,e,d||document):null;};})()});if(window.$==null){Window.implement("$",function(a,b){return document.id(a,b,this.document); -});}Window.implement({getDocument:function(){return this.document;},getWindow:function(){return this;}});[Document,Element].invoke("implement",{getElements:function(a){return Slick.search(this,a,new Elements); -},getElement:function(a){return document.id(Slick.find(this,a));}});if(window.$$==null){Window.implement("$$",function(a){if(arguments.length==1){if(typeof a=="string"){return Slick.search(this.document,a,new Elements); -}else{if(Type.isEnumerable(a)){return new Elements(a);}}}return new Elements(arguments);});}(function(){var j={},h={};var l={input:"checked",option:"selected",textarea:"value"}; -var d=function(o){return(h[o]||(h[o]={}));};var i=function(p){if(p.removeEvents){p.removeEvents();}if(p.clearAttributes){p.clearAttributes();}var o=p.uid; -if(o!=null){delete j[o];delete h[o];}return p;};var n=["defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"]; -var c=["compact","nowrap","ismap","declare","noshade","checked","disabled","readOnly","multiple","selected","noresize","defer"];var f={html:"innerHTML","class":"className","for":"htmlFor",text:(function(){var o=document.createElement("div"); -return(o.innerText==null)?"textContent":"innerText";})()};var m=["type"];var g=["value","defaultValue"];var k=/^(?:href|src|usemap)$/i;c=c.associate(c); -n=n.associate(n.map(String.toLowerCase));m=m.associate(m);Object.append(f,g.associate(g));var b={before:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o); -}},after:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o.nextSibling);}},bottom:function(p,o){o.appendChild(p);},top:function(p,o){o.insertBefore(p,o.firstChild); -}};b.inside=b.bottom;var a=function(r,q){if(!r){return q;}r=Slick.parse(r);var p=r.expressions;for(var o=p.length;o--;){p[o][0].combinator=q;}return r; -};Element.implement({set:function(q,p){var o=Element.Properties[q];(o&&o.set)?o.set.call(this,p):this.setProperty(q,p);}.overloadSetter(),get:function(p){var o=Element.Properties[p]; -return(o&&o.get)?o.get.apply(this):this.getProperty(p);}.overloadGetter(),erase:function(p){var o=Element.Properties[p];(o&&o.erase)?o.erase.apply(this):this.removeProperty(p); -return this;},setProperty:function(p,q){p=n[p]||p;if(q==null){return this.removeProperty(p);}var o=f[p];(o)?this[o]=q:(c[p])?this[p]=!!q:this.setAttribute(p,""+q); -return this;},setProperties:function(o){for(var p in o){this.setProperty(p,o[p]);}return this;},getProperty:function(p){p=n[p]||p;var o=f[p]||m[p];return(o)?this[o]:(c[p])?!!this[p]:(k.test(p)?this.getAttribute(p,2):(o=this.getAttributeNode(p))?o.nodeValue:null)||null; -},getProperties:function(){var o=Array.from(arguments);return o.map(this.getProperty,this).associate(o);},removeProperty:function(p){p=n[p]||p;var o=f[p]; -(o)?this[o]="":(c[p])?this[p]=false:this.removeAttribute(p);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this; -},hasClass:function(o){return this.className.clean().contains(o," ");},addClass:function(o){if(!this.hasClass(o)){this.className=(this.className+" "+o).clean(); -}return this;},removeClass:function(o){this.className=this.className.replace(new RegExp("(^|\\s)"+o+"(?:\\s|$)"),"$1");return this;},toggleClass:function(o,p){if(p==null){p=!this.hasClass(o); -}return(p)?this.addClass(o):this.removeClass(o);},adopt:function(){var r=this,o,t=Array.flatten(arguments),s=t.length;if(s>1){r=o=document.createDocumentFragment(); -}for(var q=0;q"))[0]);},getLast:function(o){return document.id(Slick.search(this,a(o,">")).getLast()); -},getParent:function(o){return document.id(Slick.find(this,a(o,"!")));},getParents:function(o){return Slick.search(this,a(o,"!"),new Elements);},getSiblings:function(o){return Slick.search(this,a(o,"~~"),new Elements); -},getChildren:function(o){return Slick.search(this,a(o,">"),new Elements);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument; -},getElementById:function(o){return document.id(Slick.find(this,"#"+(""+o).replace(/(\W)/g,"\\$1")));},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(o){return o.selected; -}));},toQueryString:function(){var o=[];this.getElements("input, select, textarea").each(function(q){var p=q.type;if(!q.name||q.disabled||p=="submit"||p=="reset"||p=="file"||p=="image"){return; -}var r=(q.get("tag")=="select")?q.getSelected().map(function(s){return document.id(s).get("value");}):((p=="radio"||p=="checkbox")&&!q.checked)?null:q.get("value"); -Array.from(r).each(function(s){if(typeof s!="undefined"){o.push(encodeURIComponent(q.name)+"="+encodeURIComponent(s));}});});return o.join("&");},clone:function(r,p){r=r!==false; -var w=this.cloneNode(r);var v=function(C,B){if(!p){C.removeAttribute("id");}if(Browser.ie){C.clearAttributes();C.mergeAttributes(B);C.removeAttribute("uid"); -if(C.options){var D=C.options,z=B.options;for(var A=D.length;A--;){D[A].selected=z[A].selected;}}}var E=l[B.tagName.toLowerCase()];if(E&&B[E]){C[E]=B[E]; -}};var s;if(r){var o=w.getElementsByTagName("*"),q=this.getElementsByTagName("*");for(s=o.length;s--;){v(o[s],q[s]);}}v(w,this);if(Browser.ie){var u=this.getElementsByTagName("object"),t=w.getElementsByTagName("object"),y=u.length,x=t.length; -for(s=0;s",""],select:[1,""],tbody:[2,"","
"],tr:[3,"","
"]}; -a.thead=a.tfoot=a.tbody;var b={set:function(){var f=Array.flatten(arguments).join("");var g=(!c&&a[this.get("tag")]);if(g){var h=d;h.innerHTML=g[1]+f+g[2]; -for(var e=g[0];e--;){h=h.firstChild;}this.empty().adopt(h.childNodes);}else{this.innerHTML=f;}}};b.erase=b.set;return b;})();(function(){var c=document.html; -Element.Properties.styles={set:function(f){this.setStyles(f);}};var e=(c.style.opacity!=null);var d=/alpha\(opacity=([\d.]+)\)/i;var b=function(g,f){if(!g.currentStyle||!g.currentStyle.hasLayout){g.style.zoom=1; -}if(e){g.style.opacity=f;}else{f=(f==1)?"":"alpha(opacity="+f*100+")";var h=g.style.filter||g.getComputedStyle("filter")||"";g.style.filter=h.test(d)?h.replace(d,f):h+f; -}};Element.Properties.opacity={set:function(g){var f=this.style.visibility;if(g==0&&f!="hidden"){this.style.visibility="hidden";}else{if(g!=0&&f!="visible"){this.style.visibility="visible"; -}}b(this,g);},get:(e)?function(){var f=this.style.opacity||this.getComputedStyle("opacity");return(f=="")?1:f;}:function(){var f,g=(this.style.filter||this.getComputedStyle("filter")); -if(g){f=g.match(d);}return(f==null||g==null)?1:(f[1]/100);}};var a=(c.style.cssFloat==null)?"styleFloat":"cssFloat";Element.implement({getComputedStyle:function(h){if(this.currentStyle){return this.currentStyle[h.camelCase()]; -}var g=Element.getDocument(this).defaultView,f=g?g.getComputedStyle(this,null):null;return(f)?f.getPropertyValue((h==a)?"float":h.hyphenate()):null;},setOpacity:function(f){b(this,f); -return this;},getOpacity:function(){return this.get("opacity");},setStyle:function(g,f){switch(g){case"opacity":return this.set("opacity",parseFloat(f)); -case"float":g=a;}g=g.camelCase();if(typeOf(f)!="string"){var h=(Element.Styles[g]||"@").split(" ");f=Array.from(f).map(function(k,j){if(!h[j]){return""; -}return(typeOf(k)=="number")?h[j].replace("@",Math.round(k)):k;}).join(" ");}else{if(f==String(Number(f))){f=Math.round(f);}}this.style[g]=f;return this; -},getStyle:function(l){switch(l){case"opacity":return this.get("opacity");case"float":l=a;}l=l.camelCase();var f=this.style[l];if(!f||l=="zIndex"){f=[]; -for(var k in Element.ShortStyles){if(l!=k){continue;}for(var j in Element.ShortStyles[k]){f.push(this.getStyle(j));}return f.join(" ");}f=this.getComputedStyle(l); -}if(f){f=String(f);var h=f.match(/rgba?\([\d\s,]+\)/);if(h){f=f.replace(h[0],h[0].rgbToHex());}}if(Browser.opera||(Browser.ie&&isNaN(parseFloat(f)))){if(l.test(/^(height|width)$/)){var g=(l=="width")?["left","right"]:["top","bottom"],i=0; -g.each(function(m){i+=this.getStyle("border-"+m+"-width").toInt()+this.getStyle("padding-"+m).toInt();},this);return this["offset"+l.capitalize()]-i+"px"; -}if(Browser.opera&&String(f).indexOf("px")!=-1){return f;}if(l.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return f;},setStyles:function(g){for(var f in g){this.setStyle(f,g[f]); -}return this;},getStyles:function(){var f={};Array.flatten(arguments).each(function(g){f[g]=this.getStyle(g);},this);return f;}});Element.Styles={left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"}; -Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(l){var k=Element.ShortStyles; -var g=Element.Styles;["margin","padding"].each(function(m){var n=m+l;k[m][n]=g[n]="@px";});var j="border"+l;k.border[j]=g[j]="@px @ rgb(@, @, @)";var i=j+"Width",f=j+"Style",h=j+"Color"; -k[j]={};k.borderWidth[i]=k[j][i]=g[i]="@px";k.borderStyle[f]=k[j][f]=g[f]="@";k.borderColor[h]=k[j][h]=g[h]="rgb(@, @, @)";});})();(function(){Element.Properties.events={set:function(c){this.addEvents(c); -}};[Element,Window,Document].invoke("implement",{addEvent:function(g,i){var j=this.retrieve("events",{});if(!j[g]){j[g]={keys:[],values:[]};}if(j[g].keys.contains(i)){return this; -}j[g].keys.push(i);var h=g,c=Element.Events[g],e=i,k=this;if(c){if(c.onAdd){c.onAdd.call(this,i);}if(c.condition){e=function(l){if(c.condition.call(this,l)){return i.call(this,l); -}return true;};}h=c.base||h;}var f=function(){return i.call(k);};var d=Element.NativeEvents[h];if(d){if(d==2){f=function(l){l=new Event(l,k.getWindow()); -if(e.call(k,l)===false){l.stop();}};}this.addListener(h,f);}j[g].values.push(f);return this;},removeEvent:function(f,e){var d=this.retrieve("events");if(!d||!d[f]){return this; -}var i=d[f];var c=i.keys.indexOf(e);if(c==-1){return this;}var h=i.values[c];delete i.keys[c];delete i.values[c];var g=Element.Events[f];if(g){if(g.onRemove){g.onRemove.call(this,e); -}f=g.base||f;}return(Element.NativeEvents[f])?this.removeListener(f,h):this;},addEvents:function(c){for(var d in c){this.addEvent(d,c[d]);}return this; -},removeEvents:function(c){var e;if(typeOf(c)=="object"){for(e in c){this.removeEvent(e,c[e]);}return this;}var d=this.retrieve("events");if(!d){return this; -}if(!c){for(e in d){this.removeEvents(e);}this.eliminate("events");}else{if(d[c]){d[c].keys.each(function(f){this.removeEvent(c,f);},this);delete d[c]; -}}return this;},fireEvent:function(f,d,c){var e=this.retrieve("events");if(!e||!e[f]){return this;}d=Array.from(d);e[f].keys.each(function(g){if(c){g.delay(c,this,d); -}else{g.apply(this,d);}},this);return this;},cloneEvents:function(f,e){f=document.id(f);var d=f.retrieve("events");if(!d){return this;}if(!e){for(var c in d){this.cloneEvents(f,c); -}}else{if(d[e]){d[e].keys.each(function(g){this.addEvent(e,g);},this);}}return this;}});try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent; -}}catch(b){}Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1}; -var a=function(c){var d=c.relatedTarget;if(d==null){return true;}if(!d){return false;}return(d!=this&&d.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(d)); -};Element.Events={mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}}; -})();(function(){Element.implement({scrollTo:function(h,i){if(b(this)){this.getWindow().scrollTo(h,i);}else{this.scrollLeft=h;this.scrollTop=i;}return this; -},getSize:function(){if(b(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(b(this)){return this.getWindow().getScrollSize(); -}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(b(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop}; -},getScrolls:function(){var i=this.parentNode,h={x:0,y:0};while(i&&!b(i)){h.x+=i.scrollLeft;h.y+=i.scrollTop;i=i.parentNode;}return h;},getOffsetParent:function(){var h=this; -if(b(h)){return null;}if(!Browser.ie){return h.offsetParent;}while((h=h.parentNode)){if(d(h,"position")!="static"||b(h)){return h;}}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var m=this.getBoundingClientRect(),j=document.id(this.getDocument().documentElement),l=j.getScroll(),o=this.getScrolls(),n=(d(this,"position")=="fixed"); -return{x:m.left.toInt()+o.x+((n)?0:l.x)-j.clientLeft,y:m.top.toInt()+o.y+((n)?0:l.y)-j.clientTop};}var i=this,h={x:0,y:0};if(b(this)){return h;}while(i&&!b(i)){h.x+=i.offsetLeft; -h.y+=i.offsetTop;if(Browser.firefox){if(!f(i)){h.x+=c(i);h.y+=g(i);}var k=i.parentNode;if(k&&d(k,"overflow")!="visible"){h.x+=c(k);h.y+=g(k);}}else{if(i!=this&&Browser.safari){h.x+=c(i); -h.y+=g(i);}}i=i.offsetParent;}if(Browser.firefox&&!f(this)){h.x-=c(this);h.y-=g(this);}return h;},getPosition:function(k){if(b(this)){return{x:0,y:0};}var l=this.getOffsets(),i=this.getScrolls(); -var h={x:l.x-i.x,y:l.y-i.y};if(k&&(k=document.id(k))){var j=k.getPosition();return{x:h.x-j.x-c(k),y:h.y-j.y-g(k)};}return h;},getCoordinates:function(j){if(b(this)){return this.getWindow().getCoordinates(); -}var h=this.getPosition(j),i=this.getSize();var k={left:h.x,top:h.y,width:i.x,height:i.y};k.right=k.left+k.width;k.bottom=k.top+k.height;return k;},computePosition:function(h){return{left:h.x-e(this,"margin-left"),top:h.y-e(this,"margin-top")}; -},setPosition:function(h){return this.setStyles(this.computePosition(h));}});[Document,Window].invoke("implement",{getSize:function(){var h=a(this);return{x:h.clientWidth,y:h.clientHeight}; -},getScroll:function(){var i=this.getWindow(),h=a(this);return{x:i.pageXOffset||h.scrollLeft,y:i.pageYOffset||h.scrollTop};},getScrollSize:function(){var j=a(this),i=this.getSize(),h=this.getDocument().body; -return{x:Math.max(j.scrollWidth,h.scrollWidth,i.x),y:Math.max(j.scrollHeight,h.scrollHeight,i.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var h=this.getSize(); -return{top:0,left:0,bottom:h.y,right:h.x,height:h.y,width:h.x};}});var d=Element.getComputedStyle;function e(h,i){return d(h,i).toInt()||0;}function f(h){return d(h,"-moz-box-sizing")=="border-box"; -}function g(h){return e(h,"border-top-width");}function c(h){return e(h,"border-left-width");}function b(h){return(/^(?:body|html)$/i).test(h.tagName); -}function a(h){var i=h.getDocument();return(!i.compatMode||i.compatMode=="CSS1Compat")?i.html:i.body;}})();Element.alias({position:"setPosition"});[Window,Document,Element].invoke("implement",{getHeight:function(){return this.getSize().y; -},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x; -},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y; -},getLeft:function(){return this.getPosition().x;}});(function(){var e=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(g){this.subject=this.subject||this; -this.setOptions(g);},getTransition:function(){return function(g){return -(Math.cos(Math.PI*g)-1)/2;};},step:function(){var g=Date.now();if(g=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2); -break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a&&a[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,[a+2]); -});});(function(){var a=("onprogress" in new Browser.Request);var c=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(d){this.xhr=new Browser.Request(); -this.setOptions(d);this.headers=this.options.headers;},onStateChange:function(){var d=this.xhr;if(d.readyState!=4||!this.running){return;}this.running=false; -this.status=0;Function.attempt(function(){var e=d.status;this.status=(e==1223)?204:e;}.bind(this));d.onreadystatechange=function(){};clearTimeout(this.timer); -this.response={text:this.xhr.responseText||"",xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status)){this.success(this.response.text,this.response.xml); -}else{this.failure();}},isSuccess:function(){var d=this.status;return(d>=200&&d<300);},isRunning:function(){return !!this.running;},processScripts:function(d){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(d); -}return d.stripScripts(this.options.evalScripts);},success:function(e,d){this.onSuccess(this.processScripts(e),d);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain(); -},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},loadstart:function(d){this.fireEvent("loadstart",[d,this.xhr]); -},progress:function(d){this.fireEvent("progress",[d,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(d,e){this.headers[d]=e; -return this;},getHeader:function(d){return Function.attempt(function(){return this.xhr.getResponseHeader(d);}.bind(this));},check:function(){if(!this.running){return true; -}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));return false;}return false;},send:function(n){if(!this.check(n)){return this; -}this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var k=typeOf(n);if(k=="string"||k=="element"){n={data:n};}var g=this.options; -n=Object.append({data:g.data,url:g.url,method:g.method},n);var i=n.data,e=String(n.url),d=n.method.toLowerCase();switch(typeOf(i)){case"element":i=document.id(i).toQueryString(); -break;case"object":case"hash":i=Object.toQueryString(i);}if(this.options.format){var l="format="+this.options.format;i=(i)?l+"&"+i:l;}if(this.options.emulation&&!["get","post"].contains(d)){var j="_method="+d; -i=(i)?j+"&"+i:j;d="post";}if(this.options.urlEncoded&&["post","put"].contains(d)){var f=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+f; -}if(!e){e=document.location.pathname;}var h=e.lastIndexOf("/");if(h>-1&&(h=e.indexOf("#"))>-1){e=e.substr(0,h);}if(this.options.noCache){e+=(e.contains("?")?"&":"?")+String.uniqueID(); -}if(i&&d=="get"){e+=(e.contains("?")?"&":"?")+i;i=null;}var m=this.xhr;if(a){m.onloadstart=this.loadstart.bind(this);m.onprogress=this.progress.bind(this); -}m.open(d.toUpperCase(),e,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in m){m.withCredentials=true; -}m.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(p,o){try{m.setRequestHeader(o,p);}catch(q){this.fireEvent("exception",[o,p]); -}},this);this.fireEvent("request");m.send(i);if(!this.options.async){this.onStateChange();}if(this.options.timeout){this.timer=this.timeout.delay(this.options.timeout,this); -}return this;},cancel:function(){if(!this.running){return this;}this.running=false;var d=this.xhr;d.abort();clearTimeout(this.timer);d.onreadystatechange=d.onprogress=d.onloadstart=function(){}; -this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(d){b[d]=function(e){return this.send({data:e,method:d}); -};});c.implement(b);Element.Properties.send={set:function(d){var e=this.get("send").cancel();e.setOptions(d);return this;},get:function(){var d=this.retrieve("send"); -if(!d){d=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")});this.store("send",d);}return d;}};Element.implement({send:function(d){var e=this.get("send"); -e.send({data:this,url:d||e.options.url});return this;}});})();Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:"text/html, application/xml, text/xml, */*"}},success:function(e){var d=this.options,b=this.response; -b.html=e.stripScripts(function(f){b.javascript=f;});var c=b.html.match(/]*>([\s\S]*?)<\/body>/i);if(c){b.html=c[1];}var a=new Element("div").set("html",b.html); -b.tree=a.childNodes;b.elements=a.getElements("*");if(d.filter){b.tree=b.elements.filter(d.filter);}if(d.update){document.id(d.update).empty().set("html",b.html); -}else{if(d.append){document.id(d.append).adopt(a.getChildren());}}if(d.evalScripts){Browser.exec(b.javascript);}this.onSuccess(b.tree,b.elements,b.html,b.javascript); -}});Element.Properties.load={set:function(a){var b=this.get("load").cancel();b.setOptions(a);return this;},get:function(){var a=this.retrieve("load");if(!a){a=new Request.HTML({data:this,link:"cancel",update:this,method:"get"}); -this.store("load",a);}return a;}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Type.isObject,url:Type.isString})); -return this;}});if(!this.JSON){this.JSON={};}Object.append(JSON,{$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(a){return JSON.$specialChars[a]||"\\u00"+Math.floor(a.charCodeAt()/16).toString(16)+(a.charCodeAt()%16).toString(16); -},encode:function(b){switch(typeOf(b)){case"string":return'"'+b.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(b.map(JSON.encode).clean())+"]"; -case"object":case"hash":var a=[];Object.each(b,function(e,d){var c=JSON.encode(e);if(c){a.push(JSON.encode(d)+":"+c);}});return"{"+a+"}";case"number":case"boolean":return String(b); -case"null":return"null";}return null;},decode:function(string,secure){if(typeOf(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null; -}return eval("("+string+")");}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);Object.append(this.headers,{Accept:"application/json","X-Request":"JSON"}); -},success:function(c){var b=this.options.secure;var a=this.response.json=Function.attempt(function(){return JSON.decode(c,b);});if(a==null){this.onFailure(); -}else{this.onSuccess(a,c);}}});var Cookie=new Class({Implements:Options,options:{path:"/",domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(b,a){this.key=b; -this.setOptions(a);},write:function(b){if(this.options.encode){b=encodeURIComponent(b);}if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path; -}if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure"; -}this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)"); -return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write("");return this;}}); -Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose(); -};(function(j,l){var m,g,f=[],c,b,n=true;try{n=j.frameElement!=null;}catch(i){}var h=function(){clearTimeout(b);if(m){return;}Browser.loaded=m=true;l.removeListener("DOMContentLoaded",h).removeListener("readystatechange",a); -l.fireEvent("domready");j.fireEvent("domready");};var a=function(){for(var e=f.length;e--;){if(f[e]()){h();return true;}}return false;};var k=function(){clearTimeout(b); -if(!a()){b=setTimeout(k,10);}};l.addListener("DOMContentLoaded",h);var d=l.createElement("div");if(d.doScroll&&!n){f.push(function(){try{d.doScroll();return true; -}catch(o){}return false;});c=true;}if(l.readyState){f.push(function(){var e=l.readyState;return(e=="loaded"||e=="complete");});}if("onreadystatechange" in l){l.addListener("readystatechange",a); -}else{c=true;}if(c){k();}Element.Events.domready={onAdd:function(e){if(m){e.call(this);}}};Element.Events.load={base:"load",onAdd:function(e){if(g&&this==j){e.call(this); -}},condition:function(){if(this==j){h();delete Element.Events.load;}return true;}};j.addEvent("load",function(){g=true;});})(window,document);(function(){var id=0; -var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"window",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object; -},initialize:function(path,options){this.instance="Swiff_"+id++;this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance; -var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks; -var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments); -};})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; -params.movie=path;}else{properties.type="application/x-shockwave-flash";}properties.data=path;var build='';}}build+="";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild; -},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement()); -return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction(''+__flash__argumentsToXML(arguments,2)+""); -return eval(rs);};})(); - -// Mootools more -MooTools.More={version:"1.3.0.1",build:"6dce99bed2792dffcbbbb4ddc15a1fb9a41994b5"};Events.Pseudos=function(f,c,d){var b="monitorEvents:";var a=function(g){return{store:g.store?function(h,i){g.store(b+h,i); -}:function(h,i){(g.$monitorEvents||(g.$monitorEvents={}))[h]=i;},retrieve:g.retrieve?function(h,i){return g.retrieve(b+h,i);}:function(h,i){if(!g.$monitorEvents){return i; -}return g.$monitorEvents[h]||i;}};};var e=function(h){if(h.indexOf(":")==-1){return null;}var g=Slick.parse(h).expressions[0][0],i=g.pseudos;return(f&&f[i[0].key])?{event:g.tag,value:i[0].value,pseudo:i[0].key,original:h}:null; -};return{addEvent:function(l,n,i){var m=e(l);if(!m){return c.call(this,l,n,i);}var j=a(this),q=j.retrieve(l,[]),g=Array.from(f[m.pseudo]),k=g[1];var p=this; -var o=function(){g[0].call(p,m,n,arguments,k);};q.include({event:n,monitor:o});j.store(l,q);var h=m.event;if(k&&k[h]){h=k[h].base;}c.call(this,l,n,i);return c.call(this,h,o,i); -},removeEvent:function(m,l){var k=e(m);if(!k){return d.call(this,m,l);}var n=a(this),j=n.retrieve(m),i=Array.from(f[k.pseudo]),h=i[1];if(!j){return this; -}var g=k.event;if(h&&h[g]){g=h[g].base;}d.call(this,m,l);j.each(function(o,p){if(!l||o.event==l){d.call(this,g,o.monitor);}delete j[p];},this);n.store(m,j); -return this;}};};(function(){var b={once:function(d,e,c){e.apply(this,c);this.removeEvent(d.original,e);}};Events.definePseudo=function(c,d){b[c]=d;};var a=Events.prototype; -Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent));})();Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d];if(c&&c.$origin){c=c.$origin; -}if(c&&typeof e=="function"){b.implement(d,function(){var f=this.previous;this.previous=c;var g=e.apply(this,arguments);this.previous=f;return g;});}else{b.implement(d,e); -}});return b;};Class.Mutators.Binds=function(a){return a;};Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b]; -if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property); -if(a&&this.occluded!=null){return this.occluded=a;}this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this); -}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);["Css","Tween","Elements"].each(function(b){if(Fx[b]){Fx[b].implement(a);}});}if(this.Element&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c); -if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();Array.implement({min:function(){return Math.min.apply(null,this); -},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var a=0,b=this.length; -if(b){while(b--){a+=this[b];}}return a;},unique:function(){return[].combine(this);},shuffle:function(){for(var b=this.length;b&&--b;){var a=this[b],c=Math.floor(Math.random()*(b+1)); -this[b]=this[c];this[c]=a;}return this;},reduce:function(c,d){var e;for(var b=0,a=this.length;b3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)]; -},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}); -(function(){var i=this.Date;i.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(p){i.Methods[p.toLowerCase()]=p; -});var d=function(r,q,p){if(!p){p="0";}return new Array(q-String(r).length+1).join(p)+r;};i.implement({set:function(r,q){r=r.toLowerCase();var p=i.Methods; -if(p[r]){this["set"+p[r]](q);}return this;}.overloadSetter(),get:function(q){q=q.toLowerCase();var p=i.Methods;if(p[q]){return this["get"+p[q]]();}return null; -},clone:function(){return new i(this.get("time"));},increment:function(p,r){p=p||"day";r=r!=null?r:1;switch(p){case"year":return this.increment("month",r*12); -case"month":var q=this.get("date");this.set("date",1).set("mo",this.get("mo")+r);return this.set("date",q.min(this.get("lastdayofmonth")));case"week":return this.increment("day",r*7); -case"day":return this.set("date",this.get("date")+r);}if(!i.units[p]){throw new Error(p+" is not a supported interval");}return this.set("time",this.get("time")+r*i.units[p]()); -},decrement:function(p,q){return this.increment(p,-1*(q!=null?q:1));},isLeapYear:function(){return i.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0}); -},diff:function(q,p){if(typeOf(q)=="string"){q=i.parse(q);}return((q-this)/i.units[p||"day"](3,3)).round();},getLastDayOfMonth:function(){return i.daysInMonth(this.get("mo"),this.get("year")); -},getDayOfYear:function(){return(i.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-i.UTC(this.get("year"),0,1))/i.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil(); -},getOrdinal:function(p){return i.getMsg("ordinal",p||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3"); -},getGMTOffset:function(){var p=this.get("timezoneOffset");return((p>0)?"-":"+")+d((p.abs()/60).floor(),2)+d(p%60,2);},setAMPM:function(p){p=p.toUpperCase(); -var q=this.get("hr");if(q>11&&p=="AM"){return this.decrement("hour",12);}else{if(q<12&&p=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM"; -},parse:function(p){this.set("time",i.parse(p));return this;},isValid:function(p){return !isNaN((p||this).valueOf());},format:function(p){if(!this.isValid()){return"invalid date"; -}p=p||"%x %X";p=k[p.toLowerCase()]||p;var q=this;return p.replace(/%([a-z%])/gi,function(s,r){switch(r){case"a":return i.getMsg("days_abbr")[q.get("day")]; -case"A":return i.getMsg("days")[q.get("day")];case"b":return i.getMsg("months_abbr")[q.get("month")];case"B":return i.getMsg("months")[q.get("month")]; -case"c":return q.format("%a %b %d %H:%m:%S %Y");case"d":return d(q.get("date"),2);case"e":return d(q.get("date"),2," ");case"H":return d(q.get("hr"),2); -case"I":return d((q.get("hr")%12)||12,2);case"j":return d(q.get("dayofyear"),3);case"k":return d(q.get("hr"),2," ");case"l":return d((q.get("hr")%12)||12,2," "); -case"L":return d(q.get("ms"),3);case"m":return d((q.get("mo")+1),2);case"M":return d(q.get("min"),2);case"o":return q.get("ordinal");case"p":return i.getMsg(q.get("ampm")); -case"s":return Math.round(q/1000);case"S":return d(q.get("seconds"),2);case"U":return d(q.get("week"),2);case"w":return q.get("day");case"x":return q.format(i.getMsg("shortDate")); -case"X":return q.format(i.getMsg("shortTime"));case"y":return q.get("year").toString().substr(2);case"Y":return q.get("year");case"T":return q.get("GMTOffset"); -case"z":return q.get("GMTOffset");case"Z":return q.get("Timezone");}return r;});},toISOString:function(){return this.format("iso8601");}});i.alias("toJSON","toISOString"); -i.alias("compare","diff");i.alias("strftime","format");var k={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"}; -var g=[];var e=i.parse;var n=function(s,u,r){var q=-1;var t=i.getMsg(s+"s");switch(typeOf(u)){case"object":q=t[u.get(s)];break;case"number":q=t[u];if(!q){throw new Error("Invalid "+s+" index: "+u); -}break;case"string":var p=t.filter(function(v){return this.test(v);},new RegExp("^"+u,"i"));if(!p.length){throw new Error("Invalid "+s+" string");}if(p.length>1){throw new Error("Ambiguous "+s); -}q=p[0];}return(r)?t.indexOf(q):q;};i.extend({getMsg:function(q,p){return Locale.get("Date."+q,p);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(q,p){var r=new i; -return i.daysInMonth(q!=null?q:r.get("mo"),p!=null?p:r.get("year"))*86400000;},year:function(p){p=p||new i().get("year");return i.isLeapYear(p)?31622400000:31536000000; -}},daysInMonth:function(q,p){return[31,i.isLeapYear(p)?29:28,31,30,31,30,31,31,30,31,30,31][q];},isLeapYear:function(p){return((p%4===0)&&(p%100!==0))||(p%400===0); -},parse:function(r){var q=typeOf(r);if(q=="number"){return new i(r);}if(q!="string"){return r;}r=r.clean();if(!r.length){return null;}var p;g.some(function(t){var s=t.re.exec(r); -return(s)?(p=t.handler(s)):false;});return p||new i(e(r));},parseDay:function(p,q){return n("day",p,q);},parseMonth:function(q,p){return n("month",q,p); -},parseUTC:function(q){var p=new i(q);var r=i.UTC(p.get("year"),p.get("mo"),p.get("date"),p.get("hr"),p.get("min"),p.get("sec"),p.get("ms"));return new i(r); -},orderIndex:function(p){return i.getMsg("dateOrder").indexOf(p)+1;},defineFormat:function(p,q){k[p]=q;},defineFormats:function(p){for(var q in p){i.defineFormat(q,p[q]); -}},parsePatterns:g,defineParser:function(p){g.push((p.re&&p.handler)?p:l(p));},defineParsers:function(){Array.flatten(arguments).each(i.defineParser);},define2DigitYearStart:function(p){h=p%100; -m=p-h;}});var m=1900;var h=70;var j=function(p){return new RegExp("(?:"+i.getMsg(p).map(function(q){return q.substr(0,3);}).join("|")+")[a-z]*");};var a=function(p){switch(p){case"x":return((i.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?"; -case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var o={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/}; -o.m=o.I;o.S=o.M;var c;var b=function(p){c=p;o.a=o.A=j("days");o.b=o.B=j("months");g.each(function(r,q){if(r.format){g[q]=l(r.format);}});};var l=function(r){if(!c){return{format:r}; -}var p=[];var q=(r.source||r).replace(/%([a-z])/gi,function(t,s){return a(s)||t;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(t,s){var u=o[s]; -if(!u){return s;}p.push(s);return"("+u.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:r,re:new RegExp("^"+q+"$","i"),handler:function(v){v=v.slice(1).associate(p); -var s=new i().clearTime(),u=v.y||v.Y;if(u!=null){f.call(s,"y",u);}if("d" in v){f.call(s,"d",1);}if("m" in v||"b" in v||"B" in v){f.call(s,"m",1);}for(var t in v){f.call(s,t,v[t]); -}return s;}};};var f=function(p,q){if(!q){return this;}switch(p){case"a":case"A":return this.set("day",i.parseDay(q,true));case"b":case"B":return this.set("mo",i.parseMonth(q,true)); -case"d":return this.set("date",q);case"H":case"I":return this.set("hr",q);case"m":return this.set("mo",q-1);case"M":return this.set("min",q);case"p":return this.set("ampm",q.replace(/\./g,"")); -case"S":return this.set("sec",q);case"s":return this.set("ms",("0."+q)*1000);case"w":return this.set("day",q);case"Y":return this.set("year",q);case"y":q=+q; -if(q<100){q+=m+(q0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime(); -switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime(); -var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}});Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}}); -Number.implement({format:function(q){var n=this;if(!q){q={};}var a=function(i){if(q[i]!=null){return q[i];}return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals"); -if(f){var e=Locale.get("Number.negative")||{};if(e.prefix==null&&e.suffix==null){e.prefix="-";}Object.each(e,function(r,i){q[i]=(i=="prefix"||i=="suffix")?(a(i)+r):r; -});n=-n;}var l=a("prefix"),p=a("suffix");if(c>0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=n.toPrecision(k);}n+="";if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),m,b=+j[1]; -n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1;}while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1; -}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h);m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d; -}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(){var a=Locale.get("Number.currency")||{};if(a.scientific==null){a.scientific=false; -}if(a.decimals==null){a.decimals=2;}return this.format(a);},formatPercentage:function(){var a=Locale.get("Number.percentage")||{};if(a.suffix==null){a.suffix="%"; -}if(a.decimals==null){a.decimals=2;}return this.format(a);}});(function(){var c={a:/[àáâãäåăą]/g,A:/[ÀÃÂÃÄÅĂĄ]/g,c:/[ćÄç]/g,C:/[ĆČÇ]/g,d:/[ÄÄ‘]/g,D:/[ÄŽÃ]/g,e:/[èéêëěę]/g,E:/[ÈÉÊËĚĘ]/g,g:/[ÄŸ]/g,G:/[Äž]/g,i:/[ìíîï]/g,I:/[ÃŒÃÃŽÃ]/g,l:/[ĺľł]/g,L:/[ĹĽÅ]/g,n:/[ñňń]/g,N:/[ÑŇŃ]/g,o:/[òóôõöøő]/g,O:/[ÒÓÔÕÖØ]/g,r:/[řŕ]/g,R:/[ŘŔ]/g,s:/[ššş]/g,S:/[ŠŞŚ]/g,t:/[ťţ]/g,T:/[ŤŢ]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúûůµ]/g,U:/[ÙÚÛŮ]/g,y:/[ÿý]/g,Y:/[ŸÃ]/g,z:/[žźż]/g,Z:/[ŽŹŻ]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ã]/g,ss:/[ß]/g,oe:/[Å“]/g,OE:/[Å’]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"»":/[\uFFFD]/g}; -var a=function(f,g){var e=f;for(key in g){e=e.replace(g[key],key);}return e;};var d=function(e,f){e=e||"";var g=f?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)":"]+)?>"; -reg=new RegExp(g,"gi");return reg;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this; -}var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil()); -},getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);}});})(); -String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b;}c.each(function(i){var e=i.indexOf("="),g=i.substr(e+1),f=e<0?[""]:i.substr(0,e).match(/([^\]\[]+|(\B)(?=\]))/g),h=b; -if(a){g=decodeURIComponent(g);}f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j0){c.pop(); -}else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:""); -},set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f}; -}else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this; -},get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||""; -},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{}; -}var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c); -}}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/}; -a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c); -}});})();URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments); -}var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h; -var b=0;for(h=0;h=0||e||g.allowNegative)?j.x:0).toInt(),top:((j.y>=0||e||g.allowNegative)?j.y:0).toInt()};var i={left:"x",top:"y"};["minimum","maximum"].each(function(t){["left","top"].each(function(u){var v=g[t]?g[t][i[u]]:null; -if(v!=null&&((t=="minimum")?j[u]v)){j[u]=v;}});});if(f.getStyle("position")=="fixed"||g.relFixedPosition){var m=window.getScroll();j.top+=m.y;j.left+=m.x; -}if(g.ignoreScroll){var p=f.getScroll();j.top-=p.y;j.left-=p.x;}if(g.ignoreMargins){j.left+=(g.edge.x=="right"?n["margin-right"]:g.edge.x=="center"?-n["margin-left"]+((n["margin-right"]+n["margin-left"])/2):-n["margin-left"]); -j.top+=(g.edge.y=="bottom"?n["margin-bottom"]:g.edge.y=="center"?-n["margin-top"]+((n["margin-bottom"]+n["margin-top"])/2):-n["margin-top"]);}j.left=Math.ceil(j.left); -j.top=Math.ceil(j.top);if(g.returnPos){return j;}else{this.setStyles(j);}return this;}});})();Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"; -},isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"](); -},hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none"); -},show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a); -},swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(document.selection&&document.selection.empty){document.selection.empty(); -}else{if(window.getSelection){var a=window.getSelection();if(a&&a.removeAllRanges){a.removeAllRanges();}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:((Browser.ie&&Browser.version==6)||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b); -if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt(); -if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c); -}c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this); -var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a); -}else{a();}}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this; -}var a=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2); -this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset}); -return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block"); -}return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this; -}});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body); -this.target.store("mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+String.uniqueID(),styles:Object.merge(this.options.style,{display:"none"}),events:{click:function(){this.fireEvent("click"); -if(this.options.hideOnClick){this.hide();}}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(b,a){a=a||(this.options.inject?this.options.inject.where:"")||this.target==document.body?"inside":"after"; -b=b||(this.options.inject?this.options.inject.target:"")||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions); -this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height); -this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this; -},resize:function(a,e){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){var c=window.getScrollSize(); -if(d.totalHeight=0&&a.options[a.selectedIndex].value!=""); -}else{return((a.get("value")==null)||(a.get("value").length==0));}}});Form.Validator.addAllThese([["required",{errorMsg:function(){return Form.Validator.getMsg("required"); -},test:function(a){return !Form.Validator.getValidator("IsEmpty").test(a);}}],["minLength",{errorMsg:function(a,b){if(typeOf(b.minLength)!="null"){return Form.Validator.getMsg("minLength").substitute({minLength:b.minLength,length:a.get("value").length}); -}else{return"";}},test:function(a,b){if(typeOf(b.minLength)!="null"){return(a.get("value").length>=(b.minLength||0));}else{return true;}}}],["maxLength",{errorMsg:function(a,b){if(typeOf(b.maxLength)!="null"){return Form.Validator.getMsg("maxLength").substitute({maxLength:b.maxLength,length:a.get("value").length}); -}else{return"";}},test:function(a,b){return(a.get("value").length<=(b.maxLength||10000));}}],["validate-integer",{errorMsg:Form.Validator.getMsg.pass("integer"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(-?[1-9]\d*|0)$/).test(a.get("value")); -}}],["validate-numeric",{errorMsg:Form.Validator.getMsg.pass("numeric"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(a.get("value")); -}}],["validate-digits",{errorMsg:Form.Validator.getMsg.pass("digits"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[\d() .:\-\+#]+$/.test(a.get("value"))); -}}],["validate-alpha",{errorMsg:Form.Validator.getMsg.pass("alpha"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[a-zA-Z]+$/).test(a.get("value")); -}}],["validate-alphanum",{errorMsg:Form.Validator.getMsg.pass("alphanum"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||!(/\W/).test(a.get("value")); -}}],["validate-date",{errorMsg:function(a,b){if(Date.parse){var c=b.dateFormat||"%x";return Form.Validator.getMsg("dateSuchAs").substitute({date:new Date().format(c)}); -}else{return Form.Validator.getMsg("dateInFormatMDY");}},test:function(a,b){if(Form.Validator.getValidator("IsEmpty").test(a)){return true;}var g;if(Date.parse){var f=b.dateFormat||"%x"; -g=Date.parse(a.get("value"));var e=g.format(f);if(e!="invalid date"){a.set("value",e);}return !isNaN(g);}else{var c=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!c.test(a.get("value"))){return false; -}g=new Date(a.get("value").replace(c,"$1/$2/$3"));return(parseInt(RegExp.$1,10)==(1+g.getMonth()))&&(parseInt(RegExp.$2,10)==g.getDate())&&(parseInt(RegExp.$3,10)==g.getFullYear()); -}}}],["validate-email",{errorMsg:Form.Validator.getMsg.pass("email"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i).test(a.get("value")); -}}],["validate-url",{errorMsg:Form.Validator.getMsg.pass("url"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(a.get("value")); -}}],["validate-currency-dollar",{errorMsg:Form.Validator.getMsg.pass("currencyDollar"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); -}}],["validate-one-required",{errorMsg:Form.Validator.getMsg.pass("oneRequired"),test:function(a,b){var c=document.id(b["validate-one-required"])||a.getParent(b["validate-one-required"]); -return c.getElements("input").some(function(d){if(["checkbox","radio"].contains(d.get("type"))){return d.get("checked");}return d.get("value");});}}]]); -Element.Properties.validator={set:function(a){var b=this.retrieve("validator");if(b){b.setOptions(a);}return this.store("$moo:validator:options",a);},get:function(a){if(a||!this.retrieve("validator")){if(a||!this.retrieve("$moo:validator:options")){this.set("validator",a); -}this.store("validator",new Form.Validator(this,this.retrieve("$moo:validator:options")));}return this.retrieve("validator");}};Element.implement({validate:function(a){if(a){this.set("validator",a); -}return this.get("validator",a).validate();}});var FormValidator=Form.Validator;Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(a){if(a.reveal){a.reveal(); -}else{a.setStyle("display","block");}},hideError:function(a){if(a.dissolve){a.dissolve();}else{a.setStyle("display","none");}},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:"quad:out",offset:{y:-20}}},initialize:function(b,a){this.parent(b,a); -this.addEvent("onElementValidate",function(g,f,e,h){var d=this.getValidator(e);if(!g&&d.getError(f)){if(h){f.addClass("warning");}var c=this.makeAdvice(e,f,d.getError(f),h); -this.insertAdvice(c,f);this.showAdvice(e,f);}else{this.hideAdvice(e,f);}});},makeAdvice:function(d,f,c,g){var e=(g)?this.warningPrefix:this.errorPrefix; -e+=(this.options.useTitles)?f.title||c:c;var a=(g)?"warning-advice":"validation-advice";var b=this.getAdvice(d,f);if(b){b=b.set("html",e);}else{b=new Element("div",{html:e,styles:{display:"none"},id:"advice-"+d.split(":")[0]+"-"+this.getFieldId(f)}).addClass(a); -}f.store("$moo:advice-"+d,b);return b;},getFieldId:function(a){return a.id?a.id:a.id="input_"+a.name;},showAdvice:function(b,c){var a=this.getAdvice(b,c); -if(a&&!c.retrieve("$moo:"+this.getPropName(b))&&(a.getStyle("display")=="none"||a.getStyle("visiblity")=="hidden"||a.getStyle("opacity")==0)){c.store("$moo:"+this.getPropName(b),true); -this.options.showError(a);this.fireEvent("showAdvice",[c,a,b]);}},hideAdvice:function(b,c){var a=this.getAdvice(b,c);if(a&&c.retrieve("$moo:"+this.getPropName(b))){c.store("$moo:"+this.getPropName(b),false); -this.options.hideError(a);this.fireEvent("hideAdvice",[c,a,b]);}},getPropName:function(a){return"advice"+a;},resetField:function(a){a=document.id(a);if(!a){return this; -}this.parent(a);a.className.split(" ").each(function(b){this.hideAdvice(b,a);},this);return this;},getAllAdviceMessages:function(d,c){var b=[];if(d.hasClass("ignoreValidation")&&!c){return b; -}var a=d.className.split(" ").some(function(g){var e=g.test("^warn-")||d.hasClass("warnOnly");if(e){g=g.replace(/^warn-/,"");}var f=this.getValidator(g); -if(!f){return;}b.push({message:f.getError(d),warnOnly:e,passed:f.test(),validator:f});},this);return b;},getAdvice:function(a,b){return b.retrieve("$moo:advice-"+a); -},insertAdvice:function(a,c){var b=c.get("validatorProps");if(!b.msgPos||!document.id(b.msgPos)){if(c.type&&c.type.toLowerCase()=="radio"){c.getParent().adopt(a); -}else{a.inject(document.id(c),"after");}}else{document.id(b.msgPos).grab(a);}},validateField:function(g,f,b){var a=this.parent(g,f);if(((this.options.scrollToErrorsOnSubmit&&b==null)||b)&&!a){var c=document.id(this).getElement(".validation-failed"); -var d=document.id(this).getParent();while(d!=document.body&&d.getScrollSize().y==d.getSize().y){d=d.getParent();}var e=d.retrieve("$moo:fvScroller");if(!e&&window.Fx&&Fx.Scroll){e=new Fx.Scroll(d,this.options.scrollFxOptions); -d.store("$moo:fvScroller",e);}if(c){if(e){e.toElement(c);}else{d.scrollTo(d.getScroll().x,c.getPosition(d).y-20);}}}return a;},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false,this.options.scrollToErrorsOnBlur],this)); -}if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true,this.options.scrollToErrorsOnChange],this));}},this);}}); -Form.Validator.addAllThese([["validate-enforce-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");if(!c){return true;}(b.toEnforce||document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function(d){if(a.checked){c.enforceField(d); -}else{c.ignoreField(d);c.resetField(d);}});return true;}}],["validate-ignore-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator"); -if(!c){return true;}(b.toIgnore||document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function(d){if(a.checked){c.ignoreField(d); -c.resetField(d);}else{c.enforceField(d);}});return true;}}],["validate-nospace",{errorMsg:function(){return Form.Validator.getMsg("noSpace");},test:function(a,b){return !a.get("value").test(/\s/); -}}],["validate-toggle-oncheck",{test:function(b,c){var d=b.getParent("form").retrieve("validator");if(!d){return true;}var a=c.toToggle||document.id(c.toToggleChildrenOf).getElements("input, select, textarea"); -if(!b.checked){a.each(function(e){d.ignoreField(e);d.resetField(e);});}else{a.each(function(e){d.enforceField(e);});}return true;}}],["validate-reqchk-bynode",{errorMsg:function(){return Form.Validator.getMsg("reqChkByNode"); -},test:function(a,b){return(document.id(b.nodeId).getElements(b.selector||"input[type=checkbox], input[type=radio]")).some(function(c){return c.checked; -});}}],["validate-required-check",{errorMsg:function(a,b){return b.useTitle?a.get("title"):Form.Validator.getMsg("requiredChk");},test:function(a,b){return !!a.checked; -}}],["validate-reqchk-byname",{errorMsg:function(a,b){return Form.Validator.getMsg("reqChkByName").substitute({label:b.label||a.get("type")});},test:function(b,d){var c=d.groupName||b.get("name"); -var a=$$(document.getElementsByName(c)).some(function(g,f){return g.checked;});var e=b.getParent("form").retrieve("validator");if(a&&e){e.resetField(b); -}return a;}}],["validate-match",{errorMsg:function(a,b){return Form.Validator.getMsg("match").substitute({matchName:b.matchName||document.id(b.matchInput).get("name")}); -},test:function(b,c){var d=b.get("value");var a=document.id(c.matchInput)&&document.id(c.matchInput).get("value");return d&&a?d==a:true;}}],["validate-after-date",{errorMsg:function(a,b){return Form.Validator.getMsg("afterDate").substitute({label:b.afterLabel||(b.afterElement?Form.Validator.getMsg("startDate"):Form.Validator.getMsg("currentDate"))}); -},test:function(b,c){var d=document.id(c.afterElement)?Date.parse(document.id(c.afterElement).get("value")):new Date();var a=Date.parse(b.get("value")); -return a&&d?a>=d:true;}}],["validate-before-date",{errorMsg:function(a,b){return Form.Validator.getMsg("beforeDate").substitute({label:b.beforeLabel||(b.beforeElement?Form.Validator.getMsg("endDate"):Form.Validator.getMsg("currentDate"))}); -},test:function(b,c){var d=Date.parse(b.get("value"));var a=document.id(c.beforeElement)?Date.parse(document.id(c.beforeElement).get("value")):new Date(); -return a&&d?a>=d:true;}}],["validate-custom-required",{errorMsg:function(){return Form.Validator.getMsg("required");},test:function(a,b){return a.get("value")!=b.emptyValue; -}}],["validate-same-month",{errorMsg:function(a,b){var c=document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value");var d=a.get("value");if(d!=""){return Form.Validator.getMsg(c?"sameMonth":"startMonth"); -}},test:function(a,b){var d=Date.parse(a.get("value"));var c=Date.parse(document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value"));return d&&c?d.format("%B")==c.format("%B"):true; -}}],["validate-cc-num",{errorMsg:function(a){var b=a.get("value").replace(/[^0-9]/g,"");return Form.Validator.getMsg("creditcard").substitute({length:b.length}); -},test:function(c){if(Form.Validator.getValidator("IsEmpty").test(c)){return true;}var g=c.get("value");g=g.replace(/[^0-9]/g,"");var a=false;if(g.test(/^4[0-9]{12}([0-9]{3})?$/)){a="Visa"; -}else{if(g.test(/^5[1-5]([0-9]{14})$/)){a="Master Card";}else{if(g.test(/^3[47][0-9]{13}$/)){a="American Express";}else{if(g.test(/^6011[0-9]{12}$/)){a="Discover"; -}}}}if(a){var d=0;var e=0;for(var b=g.length-1;b>=0;--b){e=g.charAt(b).toInt();if(e==0){continue;}if((g.length-b)%2==0){e+=e;}if(e>9){e=e.toString().charAt(0).toInt()+e.toString().charAt(1).toInt(); -}d+=e;}if((d%10)==0){return true;}}var f="";while(g!=""){f+=" "+g.substr(0,4);g=g.substr(4);}c.getParent("form").retrieve("validator").ignoreField(c);c.set("value",f.clean()); -c.getParent("form").retrieve("validator").enforceField(c);return false;}}]]);var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){this.element=document.id(b); -if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(this.element);OverText.instances.push(this);if(this.options.poll){this.poll();}return this; -},toElement:function(){return this.element;},attach:function(){var a=this.options.textOverride||this.element.get("alt")||this.element.get("title");if(!a){return; -}this.text=new Element(this.options.element,{"class":"overTxtLabel",styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:a,events:{click:this.hide.pass(this.options.element=="label",this)}}).inject(this.element,"after"); -if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime());}this.text.set("for",this.element.get("id")); -}if(this.options.wrap){this.textHolder=new Element("div",{styles:{lineHeight:"normal",position:"relative"},"class":"overTxtWrapper"}).adopt(this.text).inject(this.element,"before"); -}return this.enable();},destroy:function(){this.element.eliminate("OverTextDiv").eliminate("OverText");this.disable();if(this.text){this.text.destroy(); -}if(this.textHolder){this.textHolder.destroy();}return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert}); -window.removeEvent("resize",this.reposition);this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert}); -window.addEvent("resize",this.reposition);this.assert(true);this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime()); -}this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this; -}var b=function(){if(!this.pollingPaused){this.assert(true);}}.bind(this);if(a){clearInterval(this.poller);}else{this.poller=b.periodical(this.options.pollInterval,this); -}return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return; -}this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]); -this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show(); -this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},assert:function(a){this[this.test()?"show":"hide"](a); -},test:function(){var a=this.element.get("value");return !a;},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide(); -}if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[]; -Object.append(OverText,{each:function(a){return OverText.instances.map(function(c,b){if(c.element&&c.text){return a.apply(OverText,[c,b]);}return null; -});},update:function(){return OverText.each(function(a){return a.reposition();});},hideAll:function(){return OverText.each(function(a){return a.hide(true,true); -});},showAll:function(){return OverText.each(function(a){return a.show();});}});if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.ie?"select, input, textarea, object, embed, .overTxtLabel":false}); -}Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(g,h,j){var c={};for(var d in g){var a=g[d],e=h[d],f=c[d]={}; -for(var b in a){f[b]=this.parent(a[b],e[b],j);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue;}var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit); -}}return this;},start:function(c){if(!this.check(c)){return this;}var h={},j={};for(var d in c){if(!this.elements[d]){continue;}var f=c[d],a=h[d]={},g=j[d]={}; -for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from;g[b]=e.to;}}return this.parent(h,j);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var d=function(e){return e!=null; -};var c=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:d,elements:d});this.parent(c.elements,c.options);this.togglers=$$(c.togglers); -this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide){this.options.wait=true;}if(this.options.show||this.options.show===0){this.options.display=false; -this.previous=this.options.show;}if(this.options.start){this.options.display=false;this.options.show=false;}this.effects={};if(this.options.opacity){this.effects.opacity="fullOpacity"; -}if(this.options.width){this.effects.width=this.options.fixedWidth?"fullWidth":"offsetWidth";}if(this.options.height){this.effects.height=this.options.fixedHeight?"fullHeight":"scrollHeight"; -}for(var b=0,a=this.togglers.length;b=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display")); -}.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(a,b){if(!this.check(a,b)){return this;}b=b!=null?b:true;a=(typeOf(a)=="element")?this.elements.indexOf(a):a; -if(a==this.previous&&!this.options.alwaysHide){return this;}if(this.options.returnHeightToAuto){var d=this.elements[this.previous];if(d&&!this.selfHidden){for(var c in this.effects){d.setStyle(c,d[this.effects[c]]); -}}}if((this.timer&&this.options.wait)||(a===this.previous&&!this.options.alwaysHide)){return this;}this.previous=a;var e={};this.elements.each(function(h,g){e[g]={}; -var f;if(g!=a){f=true;}else{if(this.options.alwaysHide&&((h.offsetHeight>0&&this.options.height)||h.offsetWidth>0&&this.options.width)){f=true;this.selfHidden=true; -}}this.fireEvent(f?"background":"active",[this.togglers[g],h]);for(var j in this.effects){e[g][j]=f?0:h[this.effects[j]];}},this);this.internalChain.clearChain(); -this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var f=this.elements[a];if(f){f.setStyle("height","auto");}}}.bind(this)); -return b?this.start(e):this.set(e);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var a=Array.link(arguments,{container:Type.isElement}); -this.container=a.container;},addSection:function(c,b,e){c=document.id(c);b=document.id(b);var d=this.togglers.contains(c);var a=this.togglers.length;if(a&&(!d||e)){e=e!=null?e:a-1; -c.inject(this.togglers[e],"before");b.inject(c,"after");}else{if(this.container&&!d){c.inject(this.container);b.inject(this.container);}}return this.parent.apply(this,arguments); -}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left"); -if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge(this.options,a,{returnPos:true}))); -}});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"}); -this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c); -this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this); -this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments); -if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0]+this.options.offset.x,b[1]+this.options.offset.y);},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b); -});},start:function(c,h){if(!this.check(c,h)){return this;}var e=this.element,f=e.getScrollSize(),b=e.getScroll(),d=e.getSize();values={x:c,y:h};for(var g in values){if(!values[g]&&values[g]!==0){values[g]=b[g]; -}if(typeOf(values[g])!="number"){values[g]=f[g]-d[g];}values[g]+=this.options.offset[g];}return this.parent([b.x,b.y],[values.x,values.y]);},toTop:function(){return this.start(false,0); -},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom"); -},toElement:function(d){var c=document.id(d).getPosition(this.element),b=a(this.element)?{x:0,y:0}:this.element.getScroll();return this.start(c.x+b.x,c.y+b.y); -},scrollIntoView:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y}; -["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]this.elements.length){e.splice(this.elements.length-1,e.length-this.elements.length); -}}var b=i=a=0;e.each(function(l,j){var k={};if(d){k.top=i-f[l].top-b;i+=f[l].height;}else{k.left=a-f[l].left;a+=f[l].width;}b=b+f[l].margin;c[l]=k;},this); -var g={};Array.clone(e).sort().each(function(j){g[j]=c[j];});this.start(g);this.currentOrder=e;return this;},rearrangeDOM:function(a){a=a||this.currentOrder; -var b=this.elements[0].getParent();var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0})); -},this);this.elements.setStyle("opacity",1);this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a; -});},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse()); -},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b);},this));},swap:function(c,b){if(typeOf(c)=="element"){c=this.elements.indexOf(c); -}if(typeOf(b)=="element"){b=this.elements.indexOf(b);}var a=Array.clone(this.currentOrder);a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c; -return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null; -}});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element; -this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false); -Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)}; -this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start); -return this;},start:function(a){var k=this.options;if(a.rightClick){return;}if(k.preventDefault){a.preventDefault();}if(k.stopPropagation){a.stopPropagation(); -}this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=k.limit;this.limit={x:[],y:[]};var j=this.element.getStyles("left","right","top","bottom"); -this._invert={x:k.modifiers.x=="left"&&j.left=="auto"&&!isNaN(j.right.toInt())&&(k.modifiers.x="right"),y:k.modifiers.y=="top"&&j.top=="auto"&&!isNaN(j.bottom.toInt())&&(k.modifiers.y="bottom")}; -var e,g;for(e in k.modifiers){if(!k.modifiers[e]){continue;}var b=this.element.getStyle(k.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent()); -}b=g[k.modifiers[e]];}if(k.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[k.modifiers[e]];}if(k.invert){this.value.now[e]*=-1; -}if(this._invert[e]){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e];if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f; -}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}var h={mousemove:this.bound.check,mouseup:this.bound.cancel}; -h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault();}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2))); -if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element); -}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault();}this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue; -}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1;}if(this._invert[c]){this.value.now[c]*=-1;}if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1]; -}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]d.left&&b.xd.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]); -}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables(); -}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a); -this.store("dragger",b);return b;}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){if(this.options.snap){a=this.toPosition(this.step); -}this.knob.setStyle(this.property,a);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e); -this.element=document.id(f);this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var g,b={},d={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y"; -this.property="top";g="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";g="offsetWidth";}this.full=this.element.measure(function(){this.half=this.knob[g]/2; -return this.element[g]-this.knob[g]+(this.options.offset*2);}.bind(this));this.setRange(this.options.range);this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset); -d[this.axis]=this.property;b[this.axis]=[-this.options.offset,this.full-this.options.offset];var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true; -}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)}; -if(this.options.snap){c.grid=Math.ceil(this.stepWidth);c.limit[this.axis][1]=this.full;}this.drag=new Drag(this.knob,c);this.attach();if(this.options.initialStep!=null){this.set(this.options.initialStep); -}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement); -}this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement);this.element.removeEvent("mousewheel",this.scrolledElement); -this.drag.detach();return this;},set:function(a){if(!((this.range>0)^(a0)^(a>this.max))){a=this.max;}this.step=Math.round(a); -this.checkStep();this.fireEvent("tick",this.toPosition(this.step));this.end();return this;},setRange:function(a,b){this.min=Array.pick([a[0],0]);this.max=Array.pick([a[1],this.options.steps]); -this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range); -this.set(Array.pick([b,this.step]).floor(this.min).max(this.max));return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return; -}var b=this.range<0?-1:1;var a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset); -this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();this.fireEvent("tick",a);this.end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0); -this.set(b?this.step-this.stepSize:this.step+this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1;var a=this.drag.value.now[this.axis]; -a=a.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step; -this.fireEvent("change",this.step);}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent("complete",this.step+""); -}},toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset; -}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false,preventDefault:false},initialize:function(a,b){this.setOptions(b); -this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert)); -}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a); -var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b); -},this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.push(a);this.addItems(a.getChildren());},this);return this; -},removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b); -return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a; -},this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list); -}var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")});if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e); -if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true);}});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent())); -},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element);if(!this.options.constrain){a.append(this.lists).erase(this.list); -}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b;this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after"; -}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]);},start:function(b,a){if(!this.idle||b.rightClick||["button","input"].contains(b.target.get("tag"))){return; -}this.idle=false;this.element=a;this.opacity=a.get("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,{preventDefault:this.options.preventDefault,snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){b.stop(); -this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)}); -this.clone.inject(this.element,"before");this.drag.start(b);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var a=this.element.getStyles("width","height"); -var b=this.clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));this.effect.element=this.clone;this.effect.start({top:b.top,left:b.left,width:a.width,height:a.height,opacity:0.25}).chain(this.reset.bind(this)); -}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null; -}});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0; -}return(a||a===0)&&a>=0&&a2083){this.fireEvent("error",f);}var a=this.getScript(f).inject(c.injectScript);this.fireEvent("request",[a.get("src"),a]);Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,b); -}.bind(this);if(c.timeout){(function(){if(this.running){this.fireEvent("timeout",[a.get("src"),a]).fireEvent("failure").cancel();}}).delay(c.timeout,this); -}return this;},getScript:function(a){return this.script=new Element("script",{type:"text/javascript",src:a});},success:function(b,a){if(!this.running){return false; -}this.clear().fireEvent("complete",b).fireEvent("success",b).callChain();},cancel:function(){return this.running?this.clear().fireEvent("cancel"):this; -},isRunning:function(){return !!this.running;},clear:function(){if(this.script){this.script.destroy();}this.running=false;return this;}});Request.JSONP.counter=0; -Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:["attach","request","complete","cancel","success","failure","exception"],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(a){if(a){var b=a.requests; -delete a.requests;}this.setOptions(a);this.requests={};this.queue=[];this.reqBinders={};if(b){this.addRequests(b);}},addRequest:function(a,b){this.requests[a]=b; -this.attach(a,b);return this;},addRequests:function(a){Object.each(a,function(c,b){this.addRequest(b,c);},this);return this;},getName:function(a){return Object.keyOf(this.requests,a); -},attach:function(a,b){if(b._groupSend){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){if(!this.reqBinders[a]){this.reqBinders[a]={}; -}this.reqBinders[a][c]=function(){this["on"+c.capitalize()].apply(this,[a,b].append(arguments));}.bind(this);b.addEvent(c,this.reqBinders[a][c]);},this); -b._groupSend=b.send;b.send=function(c){this.send(a,c);return b;}.bind(this);return this;},removeRequest:function(b){var a=typeOf(b)=="object"?this.getName(b):b; -if(!a&&typeOf(a)!="string"){return this;}b=this.requests[a];if(!b){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){b.removeEvent(c,this.reqBinders[a][c]); -},this);b.send=b._groupSend;delete b._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(a){return a.running;}); -},isRunning:function(){return !!(Object.keys(this.getRunning()).length);},send:function(b,a){var c=function(){this.requests[b]._groupSend(a);this.queue.erase(c); -}.bind(this);c.name=b;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure)){this.queue.push(c);}else{c(); -}return this;},hasNext:function(a){return(!a)?!!this.queue.length:!!this.queue.filter(function(b){return b.name==a;}).length;},resume:function(){this.error=false; -(this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(a){if(!this.queue.length){return this; -}if(!a){this.queue[0]();}else{var b;this.queue.each(function(c){if(!b&&c.name==a){b=true;c();}});}return this;},runAll:function(){this.queue.each(function(a){a(); -});return this;},clear:function(a){if(!a){this.queue.empty();}else{this.queue=this.queue.map(function(b){if(b.name!=a){return b;}else{return false;}}).filter(function(b){return b; -});}return this;},cancel:function(a){this.requests[a].cancel();return this;},onRequest:function(){this.fireEvent("request",arguments);},onComplete:function(){this.fireEvent("complete",arguments); -if(!this.queue.length){this.fireEvent("end");}},onCancel:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("cancel",arguments); -},onSuccess:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("success",arguments);},onFailure:function(){this.error=true; -if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("failure",arguments);},onException:function(){this.error=true; -if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("exception",arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b}); -}};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit); -this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck); -}});var Asset={javascript:function(d,b){b=Object.append({document:document},b);if(b.onLoad){b.onload=b.onLoad;delete b.onLoad;}var a=new Element("script",{src:d,type:"text/javascript"}); -var c=b.onload||function(){},e=b.document;delete b.onload;delete b.document;return a.addEvents({load:c,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){c.call(this); -}}}).set(b).inject(e.head);},css:function(b,a){a=a||{};var c=a.onload||a.onLoad;if(c){a.events=a.events||{};a.events.load=c;delete a.onload;delete a.onLoad; -}return new Element("link",Object.merge({rel:"stylesheet",media:"screen",type:"text/css",href:b},a)).inject(document.head);},image:function(c,b){b=Object.merge({onload:function(){},onabort:function(){},onerror:function(){}},b); -var d=new Image();var a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e;var f=e.capitalize();if(b["on"+f]){b[g]=b["on"+f]; -delete b["on"+f];}var h=b[g];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null; -h.delay(1,a,a);a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){b=Object.merge({onComplete:function(){},onProgress:function(){},onError:function(){},properties:{}},b); -c=Array.from(c);var a=0;return new Elements(c.map(function(e,d){return Asset.image(e,Object.append(b.properties,{onload:function(){a++;b.onProgress.call(this,a,d,e); -if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,d,e);if(a==c.length){b.onComplete();}}}));}));}};(function(){var d=this.Color=new Type("Color",function(f,g){if(arguments.length>=3){g="rgb"; -f=Array.slice(arguments,0,3);}else{if(typeof f=="string"){if(f.match(/rgb/)){f=f.rgbToHex().hexToRgb(true);}else{if(f.match(/hsb/)){f=f.hsbToRgb();}else{f=f.hexToRgb(true); -}}}}g=g||"rgb";switch(g){case"hsb":var e=f;f=f.hsbToRgb();f.hsb=e;break;case"hex":f=f.hexToRgb(true);break;}f.rgb=f.slice(0,3);f.hsb=f.hsb||f.rgbToHsb(); -f.hex=f.rgbToHex();return Object.append(f,this);});d.implement({mix:function(){var e=Array.slice(arguments);var g=(typeOf(e.getLast())=="number")?e.pop():50; -var f=this.slice();e.each(function(h){h=new d(h);for(var j=0;j<3;j++){f[j]=Math.round((f[j]/100*(100-g))+(h[j]/100*g));}});return new d(f,"rgb");},invert:function(){return new d(this.map(function(e){return 255-e; -}));},setHue:function(e){return new d([e,this.hsb[1],this.hsb[2]],"hsb");},setSaturation:function(e){return new d([this.hsb[0],e,this.hsb[2]],"hsb");},setBrightness:function(e){return new d([this.hsb[0],this.hsb[1],e],"hsb"); -}});var b=function(h,f,e){return new d([h,f,e],"rgb");};var a=function(g,f,e){return new d([g,f,e],"hsb");};var c=function(e){return new d(e,"hex");};Array.implement({rgbToHsb:function(){var f=this[0],g=this[1],n=this[2],k=0; -var m=Math.max(f,g,n),i=Math.min(f,g,n);var o=m-i;var l=m/255,j=(m!=0)?o/m:0;if(j!=0){var h=(m-f)/o;var e=(m-g)/o;var p=(m-n)/o;if(f==m){k=p-e;}else{if(g==m){k=2+h-p; -}else{k=4+e-h;}}k/=6;if(k<0){k++;}}return[Math.round(k*360),Math.round(j*100),Math.round(l*100)];},hsbToRgb:function(){var h=Math.round(this[2]/100*255); -if(this[1]==0){return[h,h,h];}else{var e=this[0]%360;var j=e%60;var k=Math.round((this[2]*(100-this[1]))/10000*255);var i=Math.round((this[2]*(6000-this[1]*j))/600000*255); -var g=Math.round((this[2]*(6000-this[1]*(60-j)))/600000*255);switch(Math.floor(e/60)){case 0:return[h,g,k];case 1:return[i,h,k];case 2:return[k,h,g];case 3:return[k,i,h]; -case 4:return[g,k,h];case 5:return[h,k,i];}}return false;}});String.implement({rgbToHsb:function(){var e=this.match(/\d{1,3}/g);return(e)?e.rgbToHsb():null; -},hsbToRgb:function(){var e=this.match(/\d{1,3}/g);return(e)?e.hsbToRgb():null;}});})();(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments); -this.events={};this.checker={};},addEvent:function(b,a){this.checker[b]=this.checker[b]||{};this.events[b]=this.events[b]||[];if(this.events[b].contains(a)){return false; -}else{this.events[b].push(a);}this.instances.each(function(c,d){c.addEvent(b,this.check.pass([b,c,d],this));},this);return this;},check:function(c,a,b){this.checker[c][b]=true; -var d=this.instances.every(function(f,e){return this.checker[c][e]||false;},this);if(!d){return;}this.checker[c]={};this.events[c].each(function(e){e.call(this,this.instances,a); -},this);}});})();Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a);this.load();},save:function(){var a=JSON.encode(this.hash); -if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true;},load:function(){this.hash=new Hash(JSON.decode(this.read(),true)); -return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments);if(this.options.autoSave){this.save(); -}return c;});}});var HtmlTable=new Class({Implements:[Options,Events,Class.Occlude],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[],headers:[],footers:[]},property:"HtmlTable",initialize:function(){var a=Array.link(arguments,{options:Type.isObject,table:Type.isElement}); -this.setOptions(a.options);this.element=a.table||new Element("table",this.options.properties);if(this.occlude()){return this.occluded;}this.build();},build:function(){this.element.store("HtmlTable",this); -this.body=document.id(this.element.tBodies[0])||new Element("tbody").inject(this.element);$$(this.body.rows);if(this.options.headers.length){this.setHeaders(this.options.headers); -}else{this.thead=document.id(this.element.tHead);}if(this.thead){this.head=document.id(this.thead.rows[0]);}if(this.options.footers.length){this.setFooters(this.options.footers); -}this.tfoot=document.id(this.element.tFoot);if(this.tfoot){this.foot=document.id(this.tfoot.rows[0]);}this.options.rows.each(function(a){this.push(a);},this); -["adopt","inject","wraps","grab","replaces","dispose"].each(function(a){this[a]=this.element[a].bind(this.element);},this);},toElement:function(){return this.element; -},empty:function(){this.body.empty();return this;},set:function(d,a){var c=(d=="headers")?"tHead":"tFoot";this[c.toLowerCase()]=(document.id(this.element[c])||new Element(c.toLowerCase()).inject(this.element,"top")).empty(); -var b=this.push(a,{},this[c.toLowerCase()],d=="headers"?"th":"td");if(d=="headers"){this.head=document.id(this.thead.rows[0]);}else{this.foot=document.id(this.thead.rows[0]); -}return b;},setHeaders:function(a){this.set("headers",a);return this;},setFooters:function(a){this.set("footers",a);return this;},push:function(e,b,d,a){if(typeOf(e)=="element"&&e.get("tag")=="tr"){e.inject(d||this.body); -return{tr:e,tds:e.getChildren("td")};}var c=e.map(function(h){var i=new Element(a||"td",h?h.properties:{}),g=(h?h.content:"")||h,f=document.id(g);if(typeOf(g)!="string"&&f){i.adopt(f); -}else{i.set("html",g);}return i;});return{tr:new Element("tr",b).inject(d||this.body).adopt(c),tds:c};}});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:"table-tr-odd",zebra:true},initialize:function(){this.previous.apply(this,arguments); -if(this.occluded){return this.occluded;}if(this.options.zebra){this.updateZebras();}},updateZebras:function(){Array.each(this.body.rows,this.zebra,this); -},zebra:function(b,a){return b[((a%2)?"remove":"add")+"Class"](this.options.classZebra);},push:function(){var a=this.previous.apply(this,arguments);if(this.options.zebra){this.updateZebras(); -}return a;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:"string",classSortable:"table-sortable",classHeadSort:"table-th-sort",classHeadSortRev:"table-th-sort-rev",classNoSort:"table-th-nosort",classGroupHead:"table-tr-group-head",classGroup:"table-tr-group",classCellSort:"table-td-sort",classSortSpan:"table-th-sort-span",sortable:false},initialize:function(){this.previous.apply(this,arguments); -if(this.occluded){return this.occluded;}this.sorted={index:null,dir:1};this.bound={headClick:this.headClick.bind(this)};this.sortSpans=new Elements();if(this.options.sortable){this.enableSort(); -if(this.options.sortIndex!=null){this.sort(this.options.sortIndex,this.options.sortReverse);}}},attachSorts:function(a){this.element.removeEvents("click:relay(th)"); -this.element[a!==false?"addEvent":"removeEvent"]("click:relay(th)",this.bound.headClick);},setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled){this.detectParsers(); -}},detectParsers:function(c){if(!this.head){return;}var a=this.options.parsers,b=this.body.rows;this.parsers=$$(this.head.cells).map(function(d,e){if(!c&&(d.hasClass(this.options.classNoSort)||d.retrieve("htmltable-parser"))){return d.retrieve("htmltable-parser"); -}var f=new Element("div");Array.each(d.childNodes,function(j){f.adopt(j);});f.inject(d);var h=new Element("span",{html:" ","class":this.options.classSortSpan}).inject(f,"top"); -this.sortSpans.push(h);var i=a[e],g;switch(typeOf(i)){case"function":i={convert:i};g=true;break;case"string":i=i;g=true;break;}if(!g){Object.some(HtmlTable.Parsers,function(o){var m=o.match; -if(!m){return false;}for(var n=0,l=b.length;ni.value?1:-1; -});if(!this.sorted.reverse){s.reverse(true);}var p=s.length,k=this.body;var n,r,a,g;while(p){var q=s[--p];r=q.position;var e=k.rows[r];if(e.disabled){continue; -}if(!m){if(g===q.value){e.removeClass(t).addClass(o);}else{g=q.value;e.removeClass(o).addClass(t);}if(this.options.zebra){this.zebra(e,p);}e.cells[f].addClass(l); -}k.appendChild(e);for(n=0;nr){s[n].position--;}}}s=null;if(b){b.grab(k);}return this.fireEvent("sort",[k,f]);},reSort:function(){if(this.sortEnabled){this.sort.call(this,this.sorted.index,this.sorted.reverse); -}return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.detectParsers();this.sortEnabled=true; -return this;},disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(a){a.destroy(); -});this.sortSpans.empty();this.sortEnabled=false;return this;}});HtmlTable.Parsers={date:{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var a=Date.parse(this.get("text").stripTags()); -return(typeOf(a)=="date")?a.format("db"):"";},type:"date"},"input-checked":{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement("input").checked; -}},"input-value":{match:/=b.length){a=null;}return a;},_attachSelects:function(d){d=d!=null?d:true; -var g=d?"addEvents":"removeEvents";this.element[g]({mouseleave:this._bound.mouseleave});this.body[g]({"click:relay(tr)":this._bound.clickRow,"contextmenu:relay(tr)":this._bound.clickRow}); -if(this.options.useKeyboard||this.keyboard){if(!this.keyboard){var f,e;var c=function(i){var h=function(j){clearTimeout(f);j.preventDefault();var k=this.body.rows[this._getRowByOffset(i)]; -if(j.shift&&k&&this.isSelected(k)){this.deselectRow(this._focused);this._focused=k;}else{if(k&&(!this.options.allowMultiSelect||!j.shift)){this.selectNone(); -}this._shiftFocus(i,j);}if(e){f=h.delay(100,this,j);}else{f=(function(){e=true;h(j);}).delay(400);}}.bind(this);return h;}.bind(this);var b=function(){clearTimeout(f); -e=false;};this.keyboard=new Keyboard({events:{"keydown:shift+up":c(-1),"keydown:shift+down":c(1),"keyup:shift+up":b,"keyup:shift+down":b,"keyup:up":b,"keyup:down":b},active:true}); -var a="";if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){a=" (Shift multi-selects).";}this.keyboard.addShortcuts({"Select Previous Row":{keys:"up",shortcut:"up arrow",handler:c(-1),description:"Select the previous row in the table."+a},"Select Next Row":{keys:"down",shortcut:"down arrow",handler:c(1),description:"Select the next row in the table."+a}}); -}this.keyboard[d?"activate":"deactivate"]();}this._updateSelects();},_mouseleave:function(){if(this._hovered){this._leaveRow(this._hovered);}}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(a,b){this.element.scrollTo(a,b); -},fps:50},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!="element")?this.docBody:this.element; -this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach}); -return this;},stop:function(){this.listener.removeEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer); -return this;},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords);},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords); -this.timer=clearInterval(this.timer);},getCoords:function(a){this.page=(this.listener.get("tag")=="body")?a.client:a.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this); -}},scroll:function(){var c=this.element.getSize(),a=this.element.getScroll(),h=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},d=this.element.getScrollSize(),g={x:0,y:0},e=this.options.area.top||this.options.area,b=this.options.area.bottom||this.options.area; -for(var f in this.page){if(this.page[f]<(e+h[f])&&a[f]!=0){g[f]=(this.page[f]-e-h[f])*this.options.velocity;}else{if(this.page[f]+b>(c[f]+h[f])&&a[f]+c[f]!=d[f]){g[f]=(this.page[f]-c[f]+b-h[f])*this.options.velocity; -}}g[f]=g[f].round();}if(g.y||g.x){this.fireEvent("change",[a.x+g.x,a.y+g.y]);}}});(function(){var a=function(c,b){return(c)?(typeOf(c)=="function"?c(b):b.get(c)):""; -};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none"); -},title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,elements:function(c){return c!=null; -}});this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});},toElement:function(){if(this.tip){return this.tip; -}this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})); -return this.tip;},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d);d.set("title","").store("tip:native",f).retrieve("tip:title",f); -d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move");}c.each(function(h){var g=d.retrieve("tip:"+h); -if(!g){g=function(i){this["element"+h.capitalize()].apply(this,[i,d]);}.bind(this);}d.store("tip:"+h,g).addEvent("mouse"+h,g);},this);},this);return this; -},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e); -});this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){this.container.empty(); -["title","text"].each(function(e){var d=b.retrieve("tip:"+e);if(d){this.fill(new Element("div",{"class":"tip-"+e}).inject(this.container),d);}},this);clearTimeout(this.timer); -this.timer=(function(){this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){clearTimeout(this.timer); -this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return; -}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b);}},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this); -}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},e={y:false,x2:false,y2:false,x:false},h={}; -for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i]; -e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this); -}if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]); -}});})();(function(){var a={json:JSON.decode};Locale.Set.defineParser=function(b,c){a[b]=c;};Locale.Set.from=function(c,b){if(instanceOf(c,Locale.Set)){return c; -}if(!b&&typeOf(c)=="string"){b="json";}if(a[b]){c=a[b](c);}locale=new Locale.Set;locale.sets=c.sets||{};if(c.inherits){locale.inherits.locales=Array.from(c.inherits.locales); -locale.inherits.sets=c.inherits.sets||{};}return locale;};})();Locale.define("ar","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}); -Locale.define("ar","FormValidator",{required:"هذا الحقل مطلوب.",minLength:"رجاءً إدخال {minLength} أحر٠على الأقل (تم إدخال {length} أحرÙ).",maxLength:"الرجاء عدم إدخال أكثر من {maxLength} أحر٠(تم إدخال {length} أحرÙ).",integer:"الرجاء إدخال عدد صحيح ÙÙŠ هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.",numeric:'الرجاء إدخال قيم رقمية ÙÙŠ هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").',digits:"الرجاء أستخدام قيم رقمية وعلامات ترقيمية Ùقط ÙÙŠ هذا الحقل (مثال, رقم هات٠مع نقطة أو شحطة)",alpha:"الرجاء أستخدام أحر٠Ùقط (ا-ÙŠ) ÙÙŠ هذا الحقل. أي ÙØ±Ø§ØºØ§Øª أو علامات غير مسموحة.",alphanum:"الرجاء أستخدام أحر٠Ùقط (ا-ÙŠ) أو أرقام (0-9) Ùقط ÙÙŠ هذا الحقل. أي ÙØ±Ø§ØºØ§Øª أو علامات غير مسموحة.",dateSuchAs:"الرجاء إدخال تاريخ صحيح كالتالي {date}",dateInFormatMDY:"الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)",email:"الرجاء إدخال بريد إلكتروني صحيح.",url:"الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.google.com",currencyDollar:"الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$",oneRequired:"الرجاء إدخال قيمة ÙÙŠ أحد هذه الحقول على الأقل.",errorPrefix:"خطأ: ",warningPrefix:"تحذير: "}); -Locale.define("ca-CA","Date",{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juli","Agost","Setembre","Octubre","Novembre","Desembre"],months_abbr:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],days_abbr:["dg","dl","dt","dc","dj","dv","ds"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"fa menys d`un minut",minuteAgo:"fa un minut",minutesAgo:"fa {delta} minuts",hourAgo:"fa un hora",hoursAgo:"fa unes {delta} hores",dayAgo:"fa un dia",daysAgo:"fa {delta} dies",lessThanMinuteUntil:"menys d`un minut des d`ara",minuteUntil:"un minut des d`ara",minutesUntil:"{delta} minuts des d`ara",hourUntil:"un hora des d`ara",hoursUntil:"unes {delta} hores des d`ara",dayUntil:"1 dia des d`ara",daysUntil:"{delta} dies des d`ara"}); -Locale.define("ca-CA","FormValidator",{required:"Aquest camp es obligatori.",minLength:"Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).",maxLength:"Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).",integer:"Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.",numeric:'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).",alpha:"Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.",alphanum:"Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.",dateSuchAs:"Per favor introdueix una data valida com {date}",dateInFormatMDY:'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")',email:'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".',url:"Per favor introdueix una URL valida com http://www.google.com.",currencyDollar:"Per favor introdueix una quantitat valida de €. Per exemple €100,00 .",oneRequired:"Per favor introdueix alguna cosa per al menys una d´aquestes entrades.",errorPrefix:"Error: ",warningPrefix:"Avis: ",noSpace:"No poden haver espais en aquesta entrada.",reqChkByNode:"No hi han elements seleccionats.",requiredChk:"Aquest camp es obligatori.",reqChkByName:"Per favor selecciona una {label}.",match:"Aquest camp necessita coincidir amb el camp {matchName}",startDate:"la data de inici",endDate:"la data de fi",currendDate:"la data actual",afterDate:"La data deu ser igual o posterior a {label}.",beforeDate:"La data deu ser igual o anterior a {label}.",startMonth:"Per favor selecciona un mes d´orige",sameMonth:"Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra."}); -(function(){var a=function(e,d,c,b){if(e==1){return d;}else{if(e==2||e==3||e==4){return c;}else{return b;}}};Locale.define("cs-CZ","Date",{months:["Leden","Únor","BÅ™ezen","Duben","KvÄ›ten","ÄŒerven","ÄŒervenec","Srpen","Září","Říjen","Listopad","Prosinec"],months_abbr:["ledna","února","bÅ™ezna","dubna","kvÄ›tna","Äervna","Äervence","srpna","září","října","listopadu","prosince"],days:["NedÄ›le","PondÄ›lí","Úterý","StÅ™eda","ÄŒtvrtek","Pátek","Sobota"],days_abbr:["ne","po","út","st","Ät","pá","so"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"dop.",PM:"odp.",ordinal:".",lessThanMinuteAgo:"pÅ™ed chvílí",minuteAgo:"pÅ™ibližnÄ› pÅ™ed minutou",minutesAgo:function(b){return"pÅ™ed {delta} "+a(b,"minutou","minutami","minutami"); -},hourAgo:"pÅ™ibližnÄ› pÅ™ed hodinou",hoursAgo:function(b){return"pÅ™ed {delta} "+a(b,"hodinou","hodinami","hodinami");},dayAgo:"pÅ™ed dnem",daysAgo:function(b){return"pÅ™ed {delta} "+a(b,"dnem","dny","dny"); -},weekAgo:"pÅ™ed týdnem",weeksAgo:function(b){return"pÅ™ed {delta} "+a(b,"týdnem","týdny","týdny");},monthAgo:"pÅ™ed mÄ›sícem",monthsAgo:function(b){return"pÅ™ed {delta} "+a(b,"mÄ›sícem","mÄ›síci","mÄ›síci"); -},yearAgo:"pÅ™ed rokem",yearsAgo:function(b){return"pÅ™ed {delta} "+a(b,"rokem","lety","lety");},lessThanMinuteUntil:"za chvíli",minuteUntil:"pÅ™ibližnÄ› za minutu",minutesUntil:function(b){return"za {delta} "+a(b,"minutu","minuty","minut"); -},hourUntil:"pÅ™ibližnÄ› za hodinu",hoursUntil:function(b){return"za {delta} "+a(b,"hodinu","hodiny","hodin");},dayUntil:"za den",daysUntil:function(b){return"za {delta} "+a(b,"den","dny","dnů"); -},weekUntil:"za týden",weeksUntil:function(b){return"za {delta} "+a(b,"týden","týdny","týdnů");},monthUntil:"za mÄ›síc",monthsUntil:function(b){return"za {delta} "+a(b,"mÄ›síc","mÄ›síce","mÄ›síců"); -},yearUntil:"za rok",yearsUntil:function(b){return"za {delta} "+a(b,"rok","roky","let");}});})();Locale.define("cs-CZ","FormValidator",{required:"Tato položka je povinná.",minLength:"Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).",maxLength:"Zadejte prosím ménÄ› než {maxLength} znaků (nápsáno {length} znaků).",integer:"Zadejte prosím celé Äíslo. Desetinná Äísla (napÅ™. 1.25) nejsou povolena.",numeric:'Zadejte jen Äíselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").',digits:"Zadejte prosím pouze Äísla a interpunkÄní znaménka(například telefonní Äíslo s pomlÄkami nebo teÄkami je povoleno).",alpha:"Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.",alphanum:"Zadejte prosím pouze písmena (a-z) nebo Äíslice (0-9). Mezery nebo jiné znaky nejsou povoleny.",dateSuchAs:"Zadejte prosím platné datum jako {date}",dateInFormatMDY:'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")',email:'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".',url:"Zadejte prosím platnou URL adresu jako http://www.google.com.",currencyDollar:"Zadejte prosím platnou Äástku. Například $100.00.",oneRequired:"Zadejte prosím alespoň jednu hodnotu pro tyto položky.",errorPrefix:"Chyba: ",warningPrefix:"UpozornÄ›ní: ",noSpace:"V této položce nejsou povoleny mezery",reqChkByNode:"Nejsou vybrány žádné položky.",requiredChk:"Tato položka je vyžadována.",reqChkByName:"Prosím vyberte {label}.",match:"Tato položka se musí shodovat s položkou {matchName}",startDate:"datum zahájení",endDate:"datum ukonÄení",currendDate:"aktuální datum",afterDate:"Datum by mÄ›lo být stejné nebo vÄ›tší než {label}.",beforeDate:"Datum by mÄ›lo být stejné nebo menší než {label}.",startMonth:"Vyberte poÄáteÄní mÄ›síc.",sameMonth:"Tyto dva datumy musí být ve stejném mÄ›síci - změňte jeden z nich.",creditcard:"Zadané Äíslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} Äísel."}); -Locale.define("da-DK","Date",{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],months_abbr:["jan.","feb.","mar.","apr.","maj.","jun.","jul.","aug.","sep.","okt.","nov.","dec."],days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],days_abbr:["søn","man","tir","ons","tor","fre","lør"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:".",lessThanMinuteAgo:"mindre end et minut siden",minuteAgo:"omkring et minut siden",minutesAgo:"{delta} minutter siden",hourAgo:"omkring en time siden",hoursAgo:"omkring {delta} timer siden",dayAgo:"1 dag siden",daysAgo:"{delta} dage siden",weekAgo:"1 uge siden",weeksAgo:"{delta} uger siden",monthAgo:"1 mÃ¥ned siden",monthsAgo:"{delta} mÃ¥neder siden",yearAgo:"1 Ã¥r siden",yearsAgo:"{delta} Ã¥r siden",lessThanMinuteUntil:"mindre end et minut fra nu",minuteUntil:"omkring et minut fra nu",minutesUntil:"{delta} minutter fra nu",hourUntil:"omkring en time fra nu",hoursUntil:"omkring {delta} timer fra nu",dayUntil:"1 dag fra nu",daysUntil:"{delta} dage fra nu",weekUntil:"1 uge fra nu",weeksUntil:"{delta} uger fra nu",monthUntil:"1 mÃ¥ned fra nu",monthsUntil:"{delta} mÃ¥neder fra nu",yearUntil:"1 Ã¥r fra nu",yearsUntil:"{delta} Ã¥r fra nu"}); -Locale.define("da-DK","FormValidator",{required:"Feltet skal udfyldes.",minLength:"Skriv mindst {minLength} tegn (du skrev {length} tegn).",maxLength:"Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.",numeric:'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").',digits:"Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).",alpha:"Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.",alphanum:"Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.",dateSuchAs:"Skriv en gyldig dato som {date}",dateInFormatMDY:'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")',email:'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".',url:'Skriv en gyldig URL adresse. F.eks "http://www.google.com".',currencyDollar:"Skriv et gldigt beløb. F.eks Kr.100.00 .",oneRequired:"Et eller flere af felterne i denne formular skal udfyldes.",errorPrefix:"Fejl: ",warningPrefix:"Advarsel: ",noSpace:"Der mÃ¥ ikke benyttes mellemrum i dette felt.",reqChkByNode:"Foretag et valg.",requiredChk:"Dette felt skal udfyldes.",reqChkByName:"Vælg en {label}.",match:"Dette felt skal matche {matchName} feltet",startDate:"start dato",endDate:"slut dato",currendDate:"dags dato",afterDate:"Datoen skal være større end eller lig med {label}.",beforeDate:"Datoen skal være mindre end eller lig med {label}.",startMonth:"Vælg en start mÃ¥ned",sameMonth:"De valgte datoer skal være i samme mÃ¥ned - skift en af dem."}); -Locale.define("de-DE","Date",{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],months_abbr:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],days_abbr:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"vormittags",PM:"nachmittags",ordinal:".",lessThanMinuteAgo:"vor weniger als einer Minute",minuteAgo:"vor einer Minute",minutesAgo:"vor {delta} Minuten",hourAgo:"vor einer Stunde",hoursAgo:"vor {delta} Stunden",dayAgo:"vor einem Tag",daysAgo:"vor {delta} Tagen",weekAgo:"vor einer Woche",weeksAgo:"vor {delta} Wochen",monthAgo:"vor einem Monat",monthsAgo:"vor {delta} Monaten",yearAgo:"vor einem Jahr",yearsAgo:"vor {delta} Jahren",lessThanMinuteUntil:"in weniger als einer Minute",minuteUntil:"in einer Minute",minutesUntil:"in {delta} Minuten",hourUntil:"in ca. einer Stunde",hoursUntil:"in ca. {delta} Stunden",dayUntil:"in einem Tag",daysUntil:"in {delta} Tagen",weekUntil:"in einer Woche",weeksUntil:"in {delta} Wochen",monthUntil:"in einem Monat",monthsUntil:"in {delta} Monaten",yearUntil:"in einem Jahr",yearsUntil:"in {delta} Jahren"}); -Locale.define("de-CH").inherit("de-DE","Date");Locale.define("de-CH","FormValidator",{required:"Dieses Feld ist obligatorisch.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",maxLength:"Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:"Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.",numeric:"Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").",digits:"Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).",alpha:"Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.",dateSuchAs:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}",dateInFormatMDY:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")",email:"Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "maria@bernasconi.ch".",url:"Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.google.ch.",currencyDollar:"Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .",oneRequired:"Machen Sie für mindestens eines der Eingabefelder einen Eintrag.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"In diesem Eingabefeld darf kein Leerzeichen sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld ist obligatorisch.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); -Locale.define("de-DE","FormValidator",{required:"Dieses Eingabefeld muss ausgefüllt werden.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).",maxLength:"Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:"Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.",numeric:"Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.",digits:"Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).",alpha:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.",dateSuchAs:"Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").",dateInFormatMDY:"Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").",email:"Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").",url:"Geben Sie bitte eine gültige URL ein (z.B. "http://www.google.de").",currencyDollar:"Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).",oneRequired:"Bitte füllen Sie mindestens ein Eingabefeld aus.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"Es darf kein Leerzeichen in diesem Eingabefeld sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld muss ausgefüllt werden.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein als {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein als {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); -Locale.define("EU","Number",{decimal:",",group:".",currency:{prefix:"€ "}});Locale.define("de-DE").inherit("EU","Number");Locale.define("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).inherit("en-US","Date"); -Locale.define("es-ES","Date",{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],months_abbr:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],days_abbr:["dom","lun","mar","mié","juv","vie","sáb"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"hace menos de un minuto",minuteAgo:"hace un minuto",minutesAgo:"hace {delta} minutos",hourAgo:"hace una hora",hoursAgo:"hace unas {delta} horas",dayAgo:"hace un día",daysAgo:"hace {delta} días",weekAgo:"hace una semana",weeksAgo:"hace unas {delta} semanas",monthAgo:"hace un mes",monthsAgo:"hace {delta} meses",yearAgo:"hace un año",yearsAgo:"hace {delta} años",lessThanMinuteUntil:"menos de un minuto desde ahora",minuteUntil:"un minuto desde ahora",minutesUntil:"{delta} minutos desde ahora",hourUntil:"una hora desde ahora",hoursUntil:"unas {delta} horas desde ahora",dayUntil:"un día desde ahora",daysUntil:"{delta} días desde ahora",weekUntil:"una semana desde ahora",weeksUntil:"unas {delta} semanas desde ahora",monthUntil:"un mes desde ahora",monthsUntil:"{delta} meses desde ahora",yearUntil:"un año desde ahora",yearsUntil:"{delta} años desde ahora"}); -Locale.define("es-AR").inherit("es-ES","Date");Locale.define("es-AR","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).",maxLength:"Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).",integer:"Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).",alpha:"Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.",alphanum:"Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.",dateSuchAs:"Por favor ingrese una fecha válida como {date}",dateInFormatMDY:'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".',url:"Por favor ingrese una URL válida como http://www.google.com.",currencyDollar:"Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .",oneRequired:"Por favor ingrese algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Advertencia: ",noSpace:"No se permiten espacios en este campo.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); -Locale.define("es-ES","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).",maxLength:"Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).",integer:"Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).",alpha:"Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.",alphanum:"Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.",dateSuchAs:"Por favor introduce una fecha válida como {date}",dateInFormatMDY:'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, introduce una dirección de email válida. Por ejemplo, "fred@domain.com".',url:"Por favor introduce una URL válida como http://www.google.com.",currencyDollar:"Por favor introduce una cantidad válida de €. Por ejemplo €100,00 .",oneRequired:"Por favor introduce algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Aviso: ",noSpace:"No pueden haber espacios en esta entrada.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); -Locale.define("et-EE","Date",{months:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],months_abbr:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],days:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],days_abbr:["pühap","esmasp","teisip","kolmap","neljap","reede","laup"],dateOrder:["month","date","year"],shortDate:"%m.%d.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"vähem kui minut aega tagasi",minuteAgo:"umbes minut aega tagasi",minutesAgo:"{delta} minutit tagasi",hourAgo:"umbes tund aega tagasi",hoursAgo:"umbes {delta} tundi tagasi",dayAgo:"1 päev tagasi",daysAgo:"{delta} päeva tagasi",weekAgo:"1 nädal tagasi",weeksAgo:"{delta} nädalat tagasi",monthAgo:"1 kuu tagasi",monthsAgo:"{delta} kuud tagasi",yearAgo:"1 aasta tagasi",yearsAgo:"{delta} aastat tagasi",lessThanMinuteUntil:"vähem kui minuti aja pärast",minuteUntil:"umbes minuti aja pärast",minutesUntil:"{delta} minuti pärast",hourUntil:"umbes tunni aja pärast",hoursUntil:"umbes {delta} tunni pärast",dayUntil:"1 päeva pärast",daysUntil:"{delta} päeva pärast",weekUntil:"1 nädala pärast",weeksUntil:"{delta} nädala pärast",monthUntil:"1 kuu pärast",monthsUntil:"{delta} kuu pärast",yearUntil:"1 aasta pärast",yearsUntil:"{delta} aasta pärast"}); -Locale.define("et-EE","FormValidator",{required:"Väli peab olema täidetud.",minLength:"Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).",maxLength:"Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).",integer:"Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.",numeric:'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").',digits:"Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).",alpha:"Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.",alphanum:"Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.",dateSuchAs:"Palun sisestage kehtiv kuupäev kujul {date}",dateInFormatMDY:'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").',email:'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").',url:"Palun sisestage kehtiv URL (näiteks: http://www.google.com).",currencyDollar:"Palun sisestage kehtiv $ summa (näiteks: $100.00).",oneRequired:"Palun sisestage midagi vähemalt ühele antud väljadest.",errorPrefix:"Viga: ",warningPrefix:"Hoiatus: ",noSpace:"Väli ei tohi sisaldada tühikuid.",reqChkByNode:"Ükski väljadest pole valitud.",requiredChk:"Välja täitmine on vajalik.",reqChkByName:"Palun valige üks {label}.",match:"Väli peab sobima {matchName} väljaga",startDate:"algkuupäev",endDate:"lõppkuupäev",currendDate:"praegune kuupäev",afterDate:"Kuupäev peab olema võrdne või pärast {label}.",beforeDate:"Kuupäev peab olema võrdne või enne {label}.",startMonth:"Palun valige algkuupäev.",sameMonth:"Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva."}); -Locale.define("fa","Date",{months:["ژانویه","Ùوریه","مارس","آپریل","مه","ژوئن","ژوئیه","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر"],months_abbr:["1","2","3","4","5","6","7","8","9","10","11","12"],days:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],days_abbr:["ÙŠ","د","س","Ú†","Ù¾","ج","Ø´"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"Ù‚.ظ",PM:"ب.ظ",ordinal:"ام",lessThanMinuteAgo:"کمتر از یک دقیقه پیش",minuteAgo:"حدود یک دقیقه پیش",minutesAgo:"{delta} دقیقه پیش",hourAgo:"حدود یک ساعت پیش",hoursAgo:"حدود {delta} ساعت پیش",dayAgo:"1 روز پیش",daysAgo:"{delta} روز پیش",weekAgo:"1 Ù‡ÙØªÙ‡ پیش",weeksAgo:"{delta} Ù‡ÙØªÙ‡ پیش",monthAgo:"1 ماه پیش",monthsAgo:"{delta} ماه پیش",yearAgo:"1 سال پیش",yearsAgo:"{delta} سال پیش",lessThanMinuteUntil:"کمتر از یک دقیقه از حالا",minuteUntil:"حدود یک دقیقه از حالا",minutesUntil:"{delta} دقیقه از حالا",hourUntil:"حدود یک ساعت از حالا",hoursUntil:"حدود {delta} ساعت از حالا",dayUntil:"1 روز از حالا",daysUntil:"{delta} روز از حالا",weekUntil:"1 Ù‡ÙØªÙ‡ از حالا",weeksUntil:"{delta} Ù‡ÙØªÙ‡ از حالا",monthUntil:"1 ماه از حالا",monthsUntil:"{delta} ماه از حالا",yearUntil:"1 سال از حالا",yearsUntil:"{delta} سال از حالا"}); -Locale.define("fa","FormValidator",{required:"این Ùیلد الزامی است.",minLength:"شما باید حداقل {minLength} حر٠وارد کنید ({length} حر٠وارد کرده اید).",maxLength:"Ù„Ø·ÙØ§ حداکثر {maxLength} حر٠وارد کنید (شما {length} حر٠وارد کرده اید).",integer:"Ù„Ø·ÙØ§ از عدد صحیح Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.",numeric:'Ù„Ø·ÙØ§ Ùقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").',digits:"Ù„Ø·ÙØ§ Ùقط از اعداد Ùˆ علامتها در این Ùیلد Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید (برای مثال شماره تلÙÙ† با خط تیره Ùˆ نقطه قابل قبول است).",alpha:"Ù„Ø·ÙØ§ Ùقط از Ø­Ø±ÙˆÙ Ø§Ù„ÙØ¨Ø§Ø¡ برای این بخش Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. کاراکترهای دیگر Ùˆ ÙØ§ØµÙ„Ù‡ مجاز نیستند.",alphanum:"Ù„Ø·ÙØ§ Ùقط از Ø­Ø±ÙˆÙ Ø§Ù„ÙØ¨Ø§Ø¡ Ùˆ اعداد در این بخش Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. کاراکترهای دیگر Ùˆ ÙØ§ØµÙ„Ù‡ مجاز نیستند.",dateSuchAs:"Ù„Ø·ÙØ§ یک تاریخ معتبر مانند {date} وارد کنید.",dateInFormatMDY:'Ù„Ø·ÙØ§ یک تاریخ معتبر به Ø´Ú©Ù„ MM/DD/YYYY وارد کنید (مانند "12/31/1999").',email:'Ù„Ø·ÙØ§ یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".',url:"Ù„Ø·ÙØ§ یک URL معتبر مانند http://www.google.com وارد کنید.",currencyDollar:"Ù„Ø·ÙØ§ یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .",oneRequired:"Ù„Ø·ÙØ§ حداقل یکی از Ùیلدها را پر کنید.",errorPrefix:"خطا: ",warningPrefix:"هشدار: ",noSpace:"Ø§Ø³ØªÙØ§Ø¯Ù‡ از ÙØ§ØµÙ„Ù‡ در این بخش مجاز نیست.",reqChkByNode:"موردی انتخاب نشده است.",requiredChk:"این Ùیلد الزامی است.",reqChkByName:"Ù„Ø·ÙØ§ یک {label} را انتخاب کنید.",match:"این Ùیلد باید با Ùیلد {matchName} مطابقت داشته باشد.",startDate:"تاریخ شروع",endDate:"تاریخ پایان",currendDate:"تاریخ کنونی",afterDate:"تاریخ میبایست برابر یا بعد از {label} باشد",beforeDate:"تاریخ میبایست برابر یا قبل از {label} باشد",startMonth:"Ù„Ø·ÙØ§ ماه شروع را انتخاب کنید",sameMonth:"این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.",creditcard:"شماره کارت اعتباری Ú©Ù‡ وارد کرده اید معتبر نیست. Ù„Ø·ÙØ§ شماره را بررسی کنید Ùˆ مجددا تلاش کنید. {length} رقم وارد شده است."}); -Locale.define("fi-FI","Date",{months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],months_abbr:["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],days_abbr:["su","ma","ti","ke","to","pe","la"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:".",lessThanMinuteAgo:"vajaa minuutti sitten",minuteAgo:"noin minuutti sitten",minutesAgo:"{delta} minuuttia sitten",hourAgo:"noin tunti sitten",hoursAgo:"noin {delta} tuntia sitten",dayAgo:"päivä sitten",daysAgo:"{delta} päivää sitten",weekAgo:"viikko sitten",weeksAgo:"{delta} viikkoa sitten",monthAgo:"kuukausi sitten",monthsAgo:"{delta} kuukautta sitten",yearAgo:"vuosi sitten",yearsAgo:"{delta} vuotta sitten",lessThanMinuteUntil:"vajaan minuutin kuluttua",minuteUntil:"noin minuutin kuluttua",minutesUntil:"{delta} minuutin kuluttua",hourUntil:"noin tunnin kuluttua",hoursUntil:"noin {delta} tunnin kuluttua",dayUntil:"päivän kuluttua",daysUntil:"{delta} päivän kuluttua",weekUntil:"viikon kuluttua",weeksUntil:"{delta} viikon kuluttua",monthUntil:"kuukauden kuluttua",monthsUntil:"{delta} kuukauden kuluttua",yearUntil:"vuoden kuluttua",yearsUntil:"{delta} vuoden kuluttua"}); -Locale.define("fi-FI","FormValidator",{required:"Tämä kenttä on pakollinen.",minLength:"Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).",maxLength:"Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).",integer:"Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.",numeric:'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").',digits:"Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).",alpha:"Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.",alphanum:"Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.",dateSuchAs:"Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}",dateInFormatMDY:'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")',email:'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").',url:"Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.google.fi.",currencyDollar:"Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .",oneRequired:"Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.",errorPrefix:"Virhe: ",warningPrefix:"Varoitus: ",noSpace:"Tässä syötteessä ei voi olla välilyöntejä",reqChkByNode:"Ei valintoja.",requiredChk:"Tämä kenttä on pakollinen.",reqChkByName:"Ole hyvä ja valitse {label}.",match:"Tämän kentän tulee vastata kenttää {matchName}",startDate:"alkupäivämäärä",endDate:"loppupäivämäärä",currendDate:"nykyinen päivämäärä",afterDate:"Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.",beforeDate:"Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.",startMonth:"Ole hyvä ja valitse aloituskuukausi",sameMonth:"Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.",creditcard:"Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty."}); -Locale.define("fi-FI","Number",{group:" "}).inherit("EU","Number");Locale.define("fr-FR","Date",{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],months_abbr:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],days_abbr:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:function(a){return(a>1)?"":"er"; -},lessThanMinuteAgo:"il y a moins d'une minute",minuteAgo:"il y a une minute",minutesAgo:"il y a {delta} minutes",hourAgo:"il y a une heure",hoursAgo:"il y a {delta} heures",dayAgo:"il y a un jour",daysAgo:"il y a {delta} jours",weekAgo:"il y a une semaine",weeksAgo:"il y a {delta} semaines",monthAgo:"il y a 1 mois",monthsAgo:"il y a {delta} mois",yearthAgo:"il y a 1 an",yearsAgo:"il y a {delta} ans",lessThanMinuteUntil:"dans moins d'une minute",minuteUntil:"dans une minute",minutesUntil:"dans {delta} minutes",hourUntil:"dans une heure",hoursUntil:"dans {delta} heures",dayUntil:"dans un jour",daysUntil:"dans {delta} jours",weekUntil:"dans 1 semaine",weeksUntil:"dans {delta} semaines",monthUntil:"dans 1 mois",monthsUntil:"dans {delta} mois",yearUntil:"dans 1 an",yearsUntil:"dans {delta} ans"}); -Locale.define("fr-FR","FormValidator",{required:"Ce champ est obligatoire.",minLength:"Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).",maxLength:"Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).",integer:'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.',numeric:'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").',digits:"Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).",alpha:"Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",alphanum:"Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",dateSuchAs:"Veuillez saisir une date correcte comme {date}",dateInFormatMDY:'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").',email:'Veuillez saisir une adresse de courrier électronique. Par example "fred@domaine.com".',url:"Veuillez saisir une URL, comme http://www.google.com.",currencyDollar:"Veuillez saisir une quantité correcte. Par example 100,00€.",oneRequired:"Veuillez sélectionner au moins une de ces options.",errorPrefix:"Erreur : ",warningPrefix:"Attention : ",noSpace:"Ce champ n'accepte pas les espaces.",reqChkByNode:"Aucun élément n'est sélectionné.",requiredChk:"Ce champ est obligatoire.",reqChkByName:"Veuillez sélectionner un(e) {label}.",match:"Ce champ doit correspondre avec le champ {matchName}.",startDate:"date de début",endDate:"date de fin",currendDate:"date actuelle",afterDate:"La date doit être identique ou postérieure à {label}.",beforeDate:"La date doit être identique ou antérieure à {label}.",startMonth:"Veuillez sélectionner un mois de début.",sameMonth:"Ces deux dates doivent être dans le même mois - vous devez en modifier une.",creditcard:"Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s)."}); -Locale.define("fr-FR","Number",{group:" "}).inherit("EU","Number");Locale.define("he-IL","Date",{months:["ינו×ר","פברו×ר","מרץ","×פריל","מ××™","יוני","יולי","×וגוסט","ספטמבר","×וקטובר","נובמבר","דצמבר"],months_abbr:["ינו×ר","פברו×ר","מרץ","×פריל","מ××™","יוני","יולי","×וגוסט","ספטמבר","×וקטובר","נובמבר","דצמבר"],days:["ר×שון","שני","שלישי","רביעי","חמישי","שישי","שבת"],days_abbr:["ר×שון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"לפני פחות מדקה",minuteAgo:"לפני כדקה",minutesAgo:"לפני {delta} דקות",hourAgo:"לפני כשעה",hoursAgo:"לפני {delta} שעות",dayAgo:"לפני יו×",daysAgo:"לפני {delta} ימי×",weekAgo:"לפני שבוע",weeksAgo:"לפני {delta} שבועות",monthAgo:"לפני חודש",monthsAgo:"לפני {delta} חודשי×",yearAgo:"לפני שנה",yearsAgo:"לפני {delta} שני×",lessThanMinuteUntil:"בעוד פחות מדקה",minuteUntil:"בעוד כדקה",minutesUntil:"בעוד {delta} דקות",hourUntil:"בעוד כשעה",hoursUntil:"בעוד {delta} שעות",dayUntil:"בעוד יו×",daysUntil:"בעוד {delta} ימי×",weekUntil:"בעוד שבוע",weeksUntil:"בעוד {delta} שבועות",monthUntil:"בעוד חודש",monthsUntil:"בעוד {delta} חודשי×",yearUntil:"בעוד שנה",yearsUntil:"בעוד {delta} שני×"}); -Locale.define("he-IL","FormValidator",{required:"× × ×œ×ž×œ× ×©×“×” ×–×”.",minLength:"× × ×œ×”×–×™×Ÿ לפחות {minLength} ×ª×•×•×™× (הזנת {length} תווי×).",maxLength:"× × ×œ×”×–×™×Ÿ עד {maxLength} ×ª×•×•×™× (הזנת {length} תווי×).",integer:"× × ×œ×”×–×™×Ÿ מספר ×©×œ× ×œ×©×“×” ×–×”. ×ž×¡×¤×¨×™× ×¢×©×¨×•× ×™×™× (כמו 1.25) ××™× × ×—×•×§×™×™×.",numeric:'× × ×œ×”×–×™×Ÿ ערך מספרי בלבד בשדה ×–×” (כמו "1", "1.1", "-1" ×ו "-1.1").',digits:"× × ×œ×”×–×™×Ÿ רק ספרות וסימני הפרדה בשדה ×–×” (למשל, מספר טלפון ×¢× ×ž×§×¤×™× ×ו נקודות ×”×•× ×—×•×§×™).",alpha:"× × ×œ×”×–×™×Ÿ רק ×ותיות ב×נגלית (a-z) בשדה ×–×”. ×¨×•×•×—×™× ×ו ×ª×•×•×™× ××—×¨×™× ××™× × ×—×•×§×™×™×.",alphanum:"× × ×œ×”×–×™×Ÿ רק ×ותריות ב×נגלית (a-z) ×ו ספרות (0-9) בשדה ×–×”. ××•×•×—×¨×™× ×ו ×ª×•×•×™× ××—×¨×™× ××™× × ×—×•×§×™×™×.",dateSuchAs:"× × ×œ×”×–×™×Ÿ ת×ריך חוקי, כמו {date}",dateInFormatMDY:'× × ×œ×”×–×™×Ÿ ת×ריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")',email:'× × ×œ×”×–×™×Ÿ כתובת ×ימייל חוקית. לדוגמה: "fred@domain.com".',url:"× × ×œ×”×–×™×Ÿ כתובת ×תר חוקית, כמו http://www.google.com.",currencyDollar:"× × ×œ×”×–×™×Ÿ ×¡×›×•× ×“×•×œ×¨×™ חוקי. לדוגמה $100.00.",oneRequired:"× × ×œ×‘×—×•×¨ לפחות בשדה ×חד.",errorPrefix:"שגי××”: ",warningPrefix:"×זהרה: ",noSpace:"×ין להזין ×¨×•×•×—×™× ×‘×©×“×” ×–×”.",reqChkByNode:"× × ×œ×‘×—×•×¨ ×חת מה×פשרויות.",requiredChk:"שדה ×–×” נדרש.",reqChkByName:"× × ×œ×‘×—×•×¨ {label}.",match:"שדה ×–×” צריך להת××™× ×œ×©×“×” {matchName}",startDate:"ת×ריך ההתחלה",endDate:"ת×ריך הסיו×",currendDate:"הת×ריך הנוכחי",afterDate:"הת×ריך צריך להיות ×–×”×” ×ו ×חרי {label}.",beforeDate:"הת×ריך צריך להיות ×–×”×” ×ו לפני {label}.",startMonth:"× × ×œ×‘×—×•×¨ חודש התחלה",sameMonth:"שני ת××¨×™×›×™× ×לה ×¦×¨×™×›×™× ×œ×”×™×•×ª ב×ותו חודש - × × ×œ×©× ×•×ª ×חד הת×ריכי×.",creditcard:"מספר כרטיס ×”×שר××™ שהוזן ×ינו חוקי. × × ×œ×‘×“×•×§ שנית. הוזנו {length} ספרות."}); -Locale.define("he-IL","Number",{decimal:".",group:",",currency:{suffix:" ₪"}});Locale.define("hu-HU","Date",{months:["Január","Február","Március","Ãprilis","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],months_abbr:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],days:["Vasárnap","HétfÅ‘","Kedd","Szerda","Csütörtök","Péntek","Szombat"],days_abbr:["V","H","K","Sze","Cs","P","Szo"],dateOrder:["year","month","date"],shortDate:"%Y.%m.%d.",shortTime:"%I:%M",AM:"de.",PM:"du.",ordinal:".",lessThanMinuteAgo:"alig egy perce",minuteAgo:"egy perce",minutesAgo:"{delta} perce",hourAgo:"egy órája",hoursAgo:"{delta} órája",dayAgo:"1 napja",daysAgo:"{delta} napja",weekAgo:"1 hete",weeksAgo:"{delta} hete",monthAgo:"1 hónapja",monthsAgo:"{delta} hónapja",yearAgo:"1 éve",yearsAgo:"{delta} éve",lessThanMinuteUntil:"alig egy perc múlva",minuteUntil:"egy perc múlva",minutesUntil:"{delta} perc múlva",hourUntil:"egy óra múlva",hoursUntil:"{delta} óra múlva",dayUntil:"1 nap múlva",daysUntil:"{delta} nap múlva",weekUntil:"1 hét múlva",weeksUntil:"{delta} hét múlva",monthUntil:"1 hónap múlva",monthsUntil:"{delta} hónap múlva",yearUntil:"1 év múlva",yearsUntil:"{delta} év múlva"}); -Locale.define("hu-HU","FormValidator",{required:"A mezÅ‘ kitöltése kötelezÅ‘.",minLength:"Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).",maxLength:"Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).",integer:"Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.",numeric:'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").',digits:"Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötÅ‘jelek és/vagy perjelekkel).",alpha:"Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",alphanum:"Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",dateSuchAs:"Valós dátum megadása szükséges (pl. {date}).",dateInFormatMDY:'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")',email:'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").',url:"Valós URL megadása szükséges (pl. http://www.google.com).",currencyDollar:"Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).",oneRequired:"Az alábbi mezÅ‘k legalább egyikének kitöltése kötelezÅ‘.",errorPrefix:"Hiba: ",warningPrefix:"Figyelem: ",noSpace:"A mezÅ‘ nem tartalmazhat szóközöket.",reqChkByNode:"Nincs egyetlen kijelölt elem sem.",requiredChk:"A mezÅ‘ kitöltése kötelezÅ‘.",reqChkByName:"Egy {label} kiválasztása szükséges.",match:"A mezÅ‘nek egyeznie kell a(z) {matchName} mezÅ‘vel.",startDate:"a kezdet dátuma",endDate:"a vég dátuma",currendDate:"jelenlegi dátum",afterDate:"A dátum nem lehet kisebb, mint {label}.",beforeDate:"A dátum nem lehet nagyobb, mint {label}.",startMonth:"Kezdeti hónap megadása szükséges.",sameMonth:"A két dátumnak ugyanazon hónapban kell lennie.",creditcard:"A megadott bankkártyaszám nem valódi (megadva {length} számjegy)."}); -Locale.define("it-IT","Date",{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],months_abbr:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],days_abbr:["dom","lun","mar","mer","gio","ven","sab"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",ordinal:"º",lessThanMinuteAgo:"meno di un minuto fa",minuteAgo:"circa un minuto fa",minutesAgo:"circa {delta} minuti fa",hourAgo:"circa un'ora fa",hoursAgo:"circa {delta} ore fa",dayAgo:"circa 1 giorno fa",daysAgo:"circa {delta} giorni fa",lessThanMinuteUntil:"tra meno di un minuto",minuteUntil:"tra circa un minuto",minutesUntil:"tra circa {delta} minuti",hourUntil:"tra circa un'ora",hoursUntil:"tra circa {delta} ore",dayUntil:"tra circa un giorno",daysUntil:"tra circa {delta} giorni"}); -Locale.define("it-IT","FormValidator",{required:"Il campo è obbligatorio.",minLength:"Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).",maxLength:"Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).",integer:"Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).",numeric:'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").',digits:"Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.",alpha:"Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.",alphanum:"Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.",dateSuchAs:"Inserire una data valida del tipo {date}",dateInFormatMDY:'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")',email:'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".',url:'Inserire un indirizzo valido. Per esempio "http://www.dominio.com".',currencyDollar:'Inserire un importo valido. Per esempio "$100.00".',oneRequired:"Completare almeno uno dei campi richiesti.",errorPrefix:"Errore: ",warningPrefix:"Attenzione: ",noSpace:"Non sono consentiti spazi.",reqChkByNode:"Nessuna voce selezionata.",requiredChk:"Il campo è obbligatorio.",reqChkByName:"Selezionare un(a) {label}.",match:"Il valore deve corrispondere al campo {matchName}",startDate:"data d'inizio",endDate:"data di fine",currendDate:"data attuale",afterDate:"La data deve corrispondere o essere successiva al {label}.",beforeDate:"La data deve corrispondere o essere precedente al {label}.",startMonth:"Selezionare un mese d'inizio",sameMonth:"Le due date devono essere dello stesso mese - occorre modificarne una."}); -Locale.define("ja-JP","Date",{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],months_abbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],days:["日曜日","月曜日","ç«æ›œæ—¥","水曜日","木曜日","金曜日","土曜日"],days_abbr:["æ—¥","月","ç«","æ°´","木","金","土"],dateOrder:["year","month","date"],shortDate:"%Y/%m/%d",shortTime:"%H:%M",AM:"åˆå‰",PM:"åˆå¾Œ",ordinal:"",lessThanMinuteAgo:"1分以内å‰",minuteAgo:"ç´„1分å‰",minutesAgo:"ç´„{delta}分å‰",hourAgo:"ç´„1時間å‰",hoursAgo:"ç´„{delta}時間å‰",dayAgo:"1æ—¥å‰",daysAgo:"{delta}æ—¥å‰",weekAgo:"1週間å‰",weeksAgo:"{delta}週間å‰",monthAgo:"1ヶ月å‰",monthsAgo:"{delta}ヶ月å‰",yearAgo:"1å¹´å‰",yearsAgo:"{delta}å¹´å‰",lessThanMinuteUntil:"今ã‹ã‚‰ç´„1分以内",minuteUntil:"今ã‹ã‚‰ç´„1分",minutesUntil:"今ã‹ã‚‰ç´„{delta}分",hourUntil:"今ã‹ã‚‰ç´„1時間",hoursUntil:"今ã‹ã‚‰ç´„{delta}時間",dayUntil:"今ã‹ã‚‰1日間",daysUntil:"今ã‹ã‚‰{delta}日間",weekUntil:"今ã‹ã‚‰1週間",weeksUntil:"今ã‹ã‚‰{delta}週間",monthUntil:"今ã‹ã‚‰1ヶ月",monthsUntil:"今ã‹ã‚‰{delta}ヶ月",yearUntil:"今ã‹ã‚‰1å¹´",yearsUntil:"今ã‹ã‚‰{delta}å¹´"}); -Locale.define("ja-JP","FormValidator",{required:"入力ã¯å¿…é ˆã§ã™ã€‚",minLength:"入力文字数ã¯{minLength}以上ã«ã—ã¦ãã ã•ã„。({length}文字)",maxLength:"入力文字数ã¯{maxLength}以下ã«ã—ã¦ãã ã•ã„。({length}文字)",integer:"整数を入力ã—ã¦ãã ã•ã„。",numeric:'入力ã§ãã‚‹ã®ã¯æ•°å€¤ã ã‘ã§ã™ã€‚(例: "1", "1.1", "-1", "-1.1"....)',digits:"入力ã§ãã‚‹ã®ã¯æ•°å€¤ã¨å¥èª­è¨˜å·ã§ã™ã€‚ (例: -ã‚„+ã‚’å«ã‚€é›»è©±ç•ªå·ãªã©).",alpha:"入力ã§ãã‚‹ã®ã¯åŠè§’英字ã ã‘ã§ã™ã€‚ãã‚Œä»¥å¤–ã®æ–‡å­—ã¯å…¥åŠ›ã§ãã¾ã›ã‚“。",alphanum:"入力ã§ãã‚‹ã®ã¯åŠè§’英数字ã ã‘ã§ã™ã€‚ãã‚Œä»¥å¤–ã®æ–‡å­—ã¯å…¥åŠ›ã§ãã¾ã›ã‚“。",dateSuchAs:"æœ‰åŠ¹ãªæ—¥ä»˜ã‚’入力ã—ã¦ãã ã•ã„。{date}",dateInFormatMDY:'æ—¥ä»˜ã®æ›¸å¼ã«èª¤ã‚ŠãŒã‚りã¾ã™ã€‚YYYY/MM/DD (i.e. "1999/12/31")',email:"メールアドレスã«èª¤ã‚ŠãŒã‚りã¾ã™ã€‚",url:"URLアドレスã«èª¤ã‚ŠãŒã‚りã¾ã™ã€‚",currencyDollar:"金é¡ã«èª¤ã‚ŠãŒã‚りã¾ã™ã€‚",oneRequired:"ã²ã¨ã¤ä»¥ä¸Šå…¥åŠ›ã—ã¦ãã ã•ã„。",errorPrefix:"エラー: ",warningPrefix:"警告: ",noSpace:"スペースã¯å…¥åŠ›ã§ãã¾ã›ã‚“。",reqChkByNode:"é¸æŠžã•れã¦ã„ã¾ã›ã‚“。",requiredChk:"ã“ã®é …ç›®ã¯å¿…é ˆã§ã™ã€‚",reqChkByName:"{label}ã‚’é¸æŠžã—ã¦ãã ã•ã„。",match:"{matchName}ãŒå…¥åŠ›ã•れã¦ã„ã‚‹å ´åˆå¿…é ˆã§ã™ã€‚",startDate:"é–‹å§‹æ—¥",endDate:"終了日",currendDate:"今日",afterDate:"{label}以é™ã®æ—¥ä»˜ã«ã—ã¦ãã ã•ã„。",beforeDate:"{label}以å‰ã®æ—¥ä»˜ã«ã—ã¦ãã ã•ã„。",startMonth:"é–‹å§‹æœˆã‚’é¸æŠžã—ã¦ãã ã•ã„。",sameMonth:"日付ãŒåŒä¸€ã§ã™ã€‚ã©ã¡ã‚‰ã‹ã‚’変更ã—ã¦ãã ã•ã„。"}); -Locale.define("ja-JP","Number",{decimal:".",group:",",currency:{decimals:0,prefix:"\\"}});Locale.define("nl-NL","Date",{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],months_abbr:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],days_abbr:["zo","ma","di","wo","do","vr","za"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"e",lessThanMinuteAgo:"minder dan een minuut geleden",minuteAgo:"ongeveer een minuut geleden",minutesAgo:"{delta} minuten geleden",hourAgo:"ongeveer een uur geleden",hoursAgo:"ongeveer {delta} uur geleden",dayAgo:"een dag geleden",daysAgo:"{delta} dagen geleden",weekAgo:"een week geleden",weeksAgo:"{delta} weken geleden",monthAgo:"een maand geleden",monthsAgo:"{delta} maanden geleden",yearAgo:"een jaar geleden",yearsAgo:"{delta} jaar geleden",lessThanMinuteUntil:"over minder dan een minuut",minuteUntil:"over ongeveer een minuut",minutesUntil:"over {delta} minuten",hourUntil:"over ongeveer een uur",hoursUntil:"over {delta} uur",dayUntil:"over ongeveer een dag",daysUntil:"over {delta} dagen",weekUntil:"over een week",weeksUntil:"over {delta} weken",monthUntil:"over een maand",monthsUntil:"over {delta} maanden",yearUntil:"over een jaar",yearsUntil:"over {delta} jaar"}); -Locale.define("nl-NL","FormValidator",{required:"Dit veld is verplicht.",minLength:"Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).",maxLength:"Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).",integer:"Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.",numeric:'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").',digits:"Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).",alpha:"Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.",alphanum:"Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.",dateSuchAs:"Vul een geldige datum in, zoals {date}",dateInFormatMDY:'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")',email:'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".',url:"Vul een geldige URL in, zoals http://www.google.nl.",currencyDollar:"Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .",oneRequired:"Vul iets in bij in ieder geval een van deze velden.",warningPrefix:"Waarschuwing: ",errorPrefix:"Fout: ",noSpace:"Spaties zijn niet toegestaan in dit veld.",reqChkByNode:"Er zijn geen items geselecteerd.",requiredChk:"Dit veld is verplicht.",reqChkByName:"Selecteer een {label}.",match:"Dit veld moet overeen komen met het {matchName} veld",startDate:"de begin datum",endDate:"de eind datum",currendDate:"de huidige datum",afterDate:"De datum moet hetzelfde of na {label} zijn.",beforeDate:"De datum moet hetzelfde of voor {label} zijn.",startMonth:"Selecteer een begin maand",sameMonth:"Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.",creditcard:"Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld."}); -Locale.define("nl-NL").inherit("EU","Number");Locale.define("no-NO","Date",{dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",lessThanMinuteAgo:"kortere enn et minutt siden",minuteAgo:"omtrent et minutt siden",minutesAgo:"{delta} minutter siden",hourAgo:"omtrent en time siden",hoursAgo:"omtrent {delta} timer siden",dayAgo:"{delta} dag siden",daysAgo:"{delta} dager siden"}); -Locale.define("no-NO","FormValidator",{required:"Dette feltet er pÃ¥krevd.",minLength:"Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).",maxLength:"Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.",numeric:'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").',digits:"Vennligst bruk kun nummer og skilletegn i dette feltet.",alpha:"Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",alphanum:"Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",dateSuchAs:"Vennligst skriv inn en gyldig dato, som {date}",dateInFormatMDY:'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")',email:'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".',url:"Vennligst skriv inn en gyldig URL, for eksempel http://www.google.no.",currencyDollar:"Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .",oneRequired:"Vennligst fyll ut noe i minst ett av disse feltene.",errorPrefix:"Feil: ",warningPrefix:"Advarsel: "}); -Locale.define("pl-PL","Date",{months:["StyczeÅ„","Luty","Marzec","KwiecieÅ„","Maj","Czerwiec","Lipiec","SierpieÅ„","WrzesieÅ„","Październik","Listopad","GrudzieÅ„"],months_abbr:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],days:["Niedziela","PoniedziaÅ‚ek","Wtorek","Åšroda","Czwartek","PiÄ…tek","Sobota"],days_abbr:["niedz.","pon.","wt.","Å›r.","czw.","pt.","sob."],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"nad ranem",PM:"po poÅ‚udniu",ordinal:function(a){return(a>3&&a<21)?"ty":["ty","szy","gi","ci","ty"][Math.min(a%10,4)]; -},lessThanMinuteAgo:"mniej niż minute temu",minuteAgo:"okoÅ‚o minutÄ™ temu",minutesAgo:"{delta} minut temu",hourAgo:"okoÅ‚o godzinÄ™ temu",hoursAgo:"okoÅ‚o {delta} godzin temu",dayAgo:"Wczoraj",daysAgo:"{delta} dni temu",lessThanMinuteUntil:"za niecałą minutÄ™",minuteUntil:"za okoÅ‚o minutÄ™",minutesUntil:"za {delta} minut",hourUntil:"za okoÅ‚o godzinÄ™",hoursUntil:"za okoÅ‚o {delta} godzin",dayUntil:"za 1 dzieÅ„",daysUntil:"za {delta} dni"}); -Locale.define("pl-PL","FormValidator",{required:"To pole jest wymagane.",minLength:"Wymagane jest przynajmniej {minLength} znaków (wpisanych zostaÅ‚o tylko {length}).",maxLength:"Dozwolone jest nie wiÄ™cej niż {maxLength} znaków (wpisanych zostaÅ‚o {length})",integer:"To pole wymaga liczb caÅ‚ych. Liczby dziesiÄ™tne (np. 1.25) sÄ… niedozwolone.",numeric:'Prosimy używać tylko numerycznych wartoÅ›ci w tym polu (np. "1", "1.1", "-1" lub "-1.1").',digits:"Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykÅ‚adu, przy numerze telefonu myÅ›lniki i kropki sÄ… dozwolone).",alpha:"Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki sÄ… niedozwolone.",alphanum:"Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki sÄ… niedozwolone.",dateSuchAs:"Prosimy podać prawidÅ‚owÄ… datÄ™ w formacie: {date}",dateInFormatMDY:'Prosimy podać poprawnÄ… date w formacie DD.MM.RRRR (i.e. "12.01.2009")',email:'Prosimy podać prawidÅ‚owy adres e-mail, np. "jan@domena.pl".',url:"Prosimy podać prawidÅ‚owy adres URL, np. http://www.google.pl.",currencyDollar:"Prosimy podać prawidÅ‚owÄ… sumÄ™ w PLN. Dla przykÅ‚adu: 100.00 PLN.",oneRequired:"Prosimy wypeÅ‚nić chociaż jedno z pól.",errorPrefix:"Błąd: ",warningPrefix:"Uwaga: ",noSpace:"W tym polu nie mogÄ… znajdować siÄ™ spacje.",reqChkByNode:"Brak zaznaczonych elementów.",requiredChk:"To pole jest wymagane.",reqChkByName:"Prosimy wybrać z {label}.",match:"To pole musi być takie samo jak {matchName}",startDate:"data poczÄ…tkowa",endDate:"data koÅ„cowa",currendDate:"aktualna data",afterDate:"Podana data poinna być taka sama lub po {label}.",beforeDate:"Podana data poinna być taka sama lub przed {label}.",startMonth:"Prosimy wybrać poczÄ…tkowy miesiÄ…c.",sameMonth:"Te dwie daty muszÄ… być w zakresie tego samego miesiÄ…ca - wymagana jest zmiana któregoÅ› z pól."}); -Locale.define("pt-PT","Date",{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],months_abbr:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],days:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],days_abbr:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"º",lessThanMinuteAgo:"há menos de um minuto",minuteAgo:"há cerca de um minuto",minutesAgo:"há {delta} minutos",hourAgo:"há cerca de uma hora",hoursAgo:"há cerca de {delta} horas",dayAgo:"há um dia",daysAgo:"há {delta} dias",weekAgo:"há uma semana",weeksAgo:"há {delta} semanas",monthAgo:"há um mês",monthsAgo:"há {delta} meses",yearAgo:"há um ano",yearsAgo:"há {delta} anos",lessThanMinuteUntil:"em menos de um minuto",minuteUntil:"em um minuto",minutesUntil:"em {delta} minutos",hourUntil:"em uma hora",hoursUntil:"em {delta} horas",dayUntil:"em um dia",daysUntil:"em {delta} dias",weekUntil:"em uma semana",weeksUntil:"em {delta} semanas",monthUntil:"em um mês",monthsUntil:"em {delta} meses",yearUntil:"em um ano",yearsUntil:"em {delta} anos"}); -Locale.define("pt-BR","Date",{shortDate:"%d/%m/%Y"}).inherit("pt-PT","Date");Locale.define("pt-BR","FormValidator",{required:"Este campo é obrigatório.",minLength:"Digite pelo menos {minLength} caracteres (tamanho atual: {length}).",maxLength:"Não digite mais de {maxLength} caracteres (tamanho atual: {length}).",integer:"Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).",numeric:'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).",alpha:"Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "nome@dominio.com".',url:"Digite uma URL válida. Exemplo: http://www.google.com.",currencyDollar:"Digite um valor em dinheiro válido. Exemplo: R$100,00 .",oneRequired:"Digite algo para pelo menos um desses campos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: ",noSpace:"Não é possível digitar espaços neste campo.",reqChkByNode:"Não foi selecionado nenhum item.",requiredChk:"Este campo é obrigatório.",reqChkByName:"Por favor digite um {label}.",match:"Este campo deve ser igual ao campo {matchName}.",startDate:"a data inicial",endDate:"a data final",currendDate:"a data atual",afterDate:"A data deve ser igual ou posterior a {label}.",beforeDate:"A data deve ser igual ou anterior a {label}.",startMonth:"Por favor selecione uma data inicial.",sameMonth:"Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.",creditcard:"O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados."}); -Locale.define("pt-PT","FormValidator",{required:"Este campo é necessário.",minLength:"Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).",maxLength:"Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).",integer:"Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.",numeric:'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).",alpha:"Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "fred@domain.com".',url:"Digite uma URL válida, como http://www.google.com.",currencyDollar:"Digite um valor válido $. Por exemplo $ 100,00. ",oneRequired:"Digite algo para pelo menos um desses insumos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: "}); -(function(){var a=function(h,e,d,g,b){var c=h%10,f=h%100;if(c==1&&f!=11){return e;}else{if((c==2||c==3||c==4)&&!(f==12||f==13||f==14)){return d;}else{if(c==0||(c==5||c==6||c==7||c==8||c==9)||(f==11||f==12||f==13||f==14)){return g; -}else{return b;}}}};Locale.define("ru-RU","Date",{months:["Январь","Февраль","Март","Ðпрель","Май","Июнь","Июль","ÐвгуÑÑ‚","СентÑбрь","ОктÑбрь","ÐоÑбрь","Декабрь"],months_abbr:["Ñнв","февр","март","апр","май","июнь","июль","авг","Ñент","окт","ноÑб","дек"],days:["ВоÑкреÑенье","Понедельник","Вторник","Среда","Четверг","ПÑтница","Суббота"],days_abbr:["Ð’Ñ","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"меньше минуты назад",minuteAgo:"минуту назад",minutesAgo:function(b){return"{delta} "+a(b,"минуту","минуты","минут")+" назад"; -},hourAgo:"Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´",hoursAgo:function(b){return"{delta} "+a(b,"чаÑ","чаÑа","чаÑов")+" назад";},dayAgo:"вчера",daysAgo:function(b){return"{delta} "+a(b,"день","днÑ","дней")+" назад"; -},weekAgo:"неделю назад",weeksAgo:function(b){return"{delta} "+a(b,"неделÑ","недели","недель")+" назад";},monthAgo:"меÑÑц назад",monthsAgo:function(b){return"{delta} "+a(b,"меÑÑц","меÑÑца","меÑецев")+" назад"; -},yearAgo:"год назад",yearsAgo:function(b){return"{delta} "+a(b,"год","года","лет")+" назад";},lessThanMinuteUntil:"меньше чем через минуту",minuteUntil:"через минуту",minutesUntil:function(b){return"через {delta} "+a(b,"чаÑ","чаÑа","чаÑов")+""; -},hourUntil:"через чаÑ",hoursUntil:function(b){return"через {delta} "+a(b,"чаÑ","чаÑа","чаÑов")+"";},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","днÑ","дней")+""; -},weekUntil:"через неделю",weeksUntil:function(b){return"через {delta} "+a(b,"неделю","недели","недель")+"";},monthUntil:"через меÑÑц",monthsUntil:function(b){return"через {delta} "+a(b,"меÑÑц","меÑÑца","меÑецев")+""; -},yearUntil:"через",yearsUntil:function(b){return"через {delta} "+a(b,"год","года","лет")+"";}});Locale.define("ru-RU-unicode").inherit("ru-RU","Date"); -})();Locale.define("ru-RU","FormValidator",{required:"Это поле обÑзательно к заполнению.",minLength:"ПожалуйÑта, введите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ {minLength} Ñимволов (Ð’Ñ‹ ввели {length}).",maxLength:"ПожалуйÑта, введите не больше {maxLength} Ñимволов (Ð’Ñ‹ ввели {length}).",integer:"ПожалуйÑта, введите в Ñто поле чиÑло. Дробные чиÑла (например 1.25) тут не разрешены.",numeric:'ПожалуйÑта, введите в Ñто поле чиÑло (например "1" или "1.1", или "-1", или "-1.1").',digits:"Ð’ Ñтом поле Ð’Ñ‹ можете иÑпользовать только цифры и знаки пунктуации (например, телефонный номер Ñо знаками дефиÑа или Ñ Ñ‚Ð¾Ñ‡ÐºÐ°Ð¼Ð¸).",alpha:"Ð’ Ñтом поле можно иÑпользовать только латинÑкие буквы (a-z). Пробелы и другие Ñимволы запрещены.",alphanum:"Ð’ Ñтом поле можно иÑпользовать только латинÑкие буквы (a-z) и цифры (0-9). Пробелы и другие Ñимволы запрещены.",dateSuchAs:"ПожалуйÑта, введите корректную дату {date}",dateInFormatMDY:'ПожалуйÑта, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")',email:'ПожалуйÑта, введите корректный емейл-адреÑ. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð° "fred@domain.com".',url:"ПожалуйÑта, введите правильную ÑÑылку вида http://www.google.com.",currencyDollar:"ПожалуйÑта, введите Ñумму в долларах. Ðапример: $100.00 .",oneRequired:"ПожалуйÑта, выберите хоть что-нибудь в одном из Ñтих полей.",errorPrefix:"Ошибка: ",warningPrefix:"Внимание: "}); -Locale.define("ru-RU-unicode").inherit("ru-RU","FormValidator");(function(){var a=function(f,d,c,e,b){return(f>=1&&f<=3)?arguments[f]:b;};Locale.define("si-SI","Date",{months:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],days:["nedelja","ponedeljek","torek","sreda","Äetrtek","petek","sobota"],days_abbr:["ned","pon","tor","sre","Äet","pet","sob"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",ordinal:".",lessThanMinuteAgo:"manj kot minuto nazaj",minuteAgo:"minuto nazaj",minutesAgo:function(b){return"{delta} "+a(b,"minuto","minuti","minute","minut")+" nazaj"; -},hourAgo:"uro nazaj",hoursAgo:function(b){return"{delta} "+a(b,"uro","uri","ure","ur")+" nazaj";},dayAgo:"dan nazaj",daysAgo:function(b){return"{delta} "+a(b,"dan","dneva","dni","dni")+" nazaj"; -},weekAgo:"teden nazaj",weeksAgo:function(b){return"{delta} "+a(b,"teden","tedna","tedne","tednov")+" nazaj";},monthAgo:"mesec nazaj",monthsAgo:function(b){return"{delta} "+a(b,"mesec","meseca","mesece","mesecov")+" nazaj"; -},yearthAgo:"leto nazaj",yearsAgo:function(b){return"{delta} "+a(b,"leto","leti","leta","let")+" nazaj";},lessThanMinuteUntil:"Å¡e manj kot minuto",minuteUntil:"Å¡e minuta",minutesUntil:function(b){return"Å¡e {delta} "+a(b,"minuta","minuti","minute","minut"); -},hourUntil:"Å¡e ura",hoursUntil:function(b){return"Å¡e {delta} "+a(b,"ura","uri","ure","ur");},dayUntil:"Å¡e dan",daysUntil:function(b){return"Å¡e {delta} "+a(b,"dan","dneva","dnevi","dni"); -},weekUntil:"Å¡e tedn",weeksUntil:function(b){return"Å¡e {delta} "+a(b,"teden","tedna","tedni","tednov");},monthUntil:"Å¡e mesec",monthsUntil:function(b){return"Å¡e {delta} "+a(b,"mesec","meseca","meseci","mesecov"); -},yearUntil:"Å¡e leto",yearsUntil:function(b){return"Å¡e {delta} "+a(b,"leto","leti","leta","let");}});})();Locale.define("si-SI","FormValidator",{required:"To polje je obvezno",minLength:"Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).",maxLength:"Prosim, ne vnesite veÄ kot {maxLength} znakov (vnesli ste {length} znakov).",integer:"Prosim, vnesite celo Å¡tevilo. Decimalna Å¡tevila (kot 1,25) niso dovoljena.",numeric:'Prosim, vnesite samo numeriÄne vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").',digits:"Prosim, uporabite Å¡tevilke in loÄila le na tem polju (na primer, dovoljena je telefonska Å¡tevilka z pomiÅ¡laji ali pikami).",alpha:"Prosim, uporabite le Ärke v tem plju. Presledki in drugi znaki niso dovoljeni.",alphanum:"Prosim, uporabite samo Ärke ali Å¡tevilke v tem polju. Presledki in drugi znaki niso dovoljeni.",dateSuchAs:"Prosim, vnesite pravilen datum kot {date}",dateInFormatMDY:'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")',email:'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".',url:"Prosim, vnesite pravilen URL kot http://www.google.com.",currencyDollar:"Prosim, vnesit epravilno vrednost €. Primer 100,00€ .",oneRequired:"Prosimo, vnesite nekaj za vsaj eno izmed teh polj.",errorPrefix:"Napaka: ",warningPrefix:"Opozorilo: ",noSpace:"To vnosno polje ne dopuÅ¡Äa presledkov.",reqChkByNode:"NiÄ niste izbrali.",requiredChk:"To polje je obvezno",reqChkByName:"Prosim, izberite {label}.",match:"To polje se mora ujemati z poljem {matchName}",startDate:"datum zaÄetka",endDate:"datum konca",currendDate:"trenuten datum",afterDate:"Datum bi moral biti isti ali po {label}.",beforeDate:"Datum bi moral biti isti ali pred {label}.",startMonth:"Prosim, vnesite zaÄetni datum",sameMonth:"Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.",creditcard:"Å tevilka kreditne kartice ni pravilna. Preverite Å¡tevilko ali poskusite Å¡e enkrat. VneÅ¡enih {length} znakov."}); -Locale.define("sv-SE","Date",{months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],days:["söndag","mÃ¥ndag","tisdag","onsdag","torsdag","fredag","lördag"],days_abbr:["sön","mÃ¥n","tis","ons","tor","fre","lör"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"",PM:"",ordinal:"",lessThanMinuteAgo:"mindre än en minut sedan",minuteAgo:"ungefär en minut sedan",minutesAgo:"{delta} minuter sedan",hourAgo:"ungefär en timme sedan",hoursAgo:"ungefär {delta} timmar sedan",dayAgo:"1 dag sedan",daysAgo:"{delta} dagar sedan",lessThanMinuteUntil:"mindre än en minut sedan",minuteUntil:"ungefär en minut sedan",minutesUntil:"{delta} minuter sedan",hourUntil:"ungefär en timme sedan",hoursUntil:"ungefär {delta} timmar sedan",dayUntil:"1 dag sedan",daysUntil:"{delta} dagar sedan"}); -Locale.define("sv-SE","FormValidator",{required:"Fältet är obligatoriskt.",minLength:"Ange minst {minLength} tecken (du angav {length} tecken).",maxLength:"Ange högst {maxLength} tecken (du angav {length} tecken). ",integer:"Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillÃ¥tna.",numeric:'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',digits:"Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillÃ¥tet).",alpha:"Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillÃ¥tna.",alphanum:"Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillÃ¥tna.",dateSuchAs:"Ange ett giltigt datum som t.ex. {date}",dateInFormatMDY:'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',email:'Ange en giltig e-postadress. Till exempel "erik@domain.com".',url:"Ange en giltig webbadress som http://www.google.com.",currencyDollar:"Ange en giltig belopp. Exempelvis 100,00.",oneRequired:"Vänligen ange minst ett av dessa alternativ.",errorPrefix:"Fel: ",warningPrefix:"Varning: ",noSpace:"Det fÃ¥r inte finnas nÃ¥gra mellanslag i detta fält.",reqChkByNode:"Inga objekt är valda.",requiredChk:"Detta är ett obligatoriskt fält.",reqChkByName:"Välj en {label}.",match:"Detta fält mÃ¥ste matcha {matchName}",startDate:"startdatumet",endDate:"slutdatum",currendDate:"dagens datum",afterDate:"Datumet bör vara samma eller senare än {label}.",beforeDate:"Datumet bör vara samma eller tidigare än {label}.",startMonth:"Välj en start mÃ¥nad",sameMonth:"Dessa tvÃ¥ datum mÃ¥ste vara i samma mÃ¥nad - du mÃ¥ste ändra det ena eller det andra."}); -(function(){var a=function(j,e,c,i,b){var h=(j/10).toInt(),g=j%10,f=(j/100).toInt();if(h==1&&j>10){return i;}if(g==1){return e;}if(g>0&&g<5){return c;}return i; -};Locale.define("uk-UA","Date",{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","ВереÑень","Жовтень","ЛиÑтопад","Грудень"],months_abbr:["Січ","Лют","Бер","Квіт","Трав","Черв","Лип","Серп","Вер","Жовт","ЛиÑÑ‚","Груд"],days:["ÐеділÑ","Понеділок","Вівторок","Середа","Четвер","П'ÑтницÑ","Субота"],days_abbr:["Ðд","Пн","Ð’Ñ‚","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"до полуднÑ",PM:"по полудню",ordinal:"",lessThanMinuteAgo:"меньше хвилини тому",minuteAgo:"хвилину тому",minutesAgo:function(b){return"{delta} "+a(b,"хвилину","хвилини","хвилин")+" тому"; -},hourAgo:"годину тому",hoursAgo:function(b){return"{delta} "+a(b,"годину","години","годин")+" тому";},dayAgo:"вчора",daysAgo:function(b){return"{delta} "+a(b,"день","днÑ","днів")+" тому"; -},weekAgo:"тиждень тому",weeksAgo:function(b){return"{delta} "+a(b,"тиждень","тижні","тижнів")+" тому";},monthAgo:"міÑÑць тому",monthsAgo:function(b){return"{delta} "+a(b,"міÑÑць","міÑÑці","міÑÑців")+" тому"; -},yearAgo:"рік тому",yearsAgo:function(b){return"{delta} "+a(b,"рік","роки","років")+" тому";},lessThanMinuteUntil:"за мить",minuteUntil:"через хвилину",minutesUntil:function(b){return"через {delta} "+a(b,"хвилину","хвилини","хвилин"); -},hourUntil:"через годину",hoursUntil:function(b){return"через {delta} "+a(b,"годину","години","годин");},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","днÑ","днів"); -},weekUntil:"через тиждень",weeksUntil:function(b){return"через {delta} "+a(b,"тиждень","тижні","тижнів");},monthUntil:"через міÑÑць",monthesUntil:function(b){return"через {delta} "+a(b,"міÑÑць","міÑÑці","міÑÑців"); -},yearUntil:"через рік",yearsUntil:function(b){return"через {delta} "+a(b,"рік","роки","років");}});})();Locale.define("uk-UA","FormValidator",{required:"Це поле повинне бути заповненим.",minLength:"Введіть хоча б {minLength} Ñимволів (Ви ввели {length}).",maxLength:"КількіÑть Ñимволів не може бути більше {maxLength} (Ви ввели {length}).",integer:"Введіть в це поле чиÑло. Дробові чиÑла (наприклад 1.25) не дозволені.",numeric:'Введіть в це поле чиÑло (наприклад "1" або "1.1", або "-1", або "-1.1").',digits:"Ð’ цьому полі ви можете викориÑтовувати лише цифри Ñ– знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).",alpha:"Ð’ цьому полі можна викориÑтовувати лише латинÑькі літери (a-z). Пробіли Ñ– інші Ñимволи заборонені.",alphanum:"Ð’ цьому полі можна викориÑтовувати лише латинÑькі літери (a-z) Ñ– цифри (0-9). Пробіли Ñ– інші Ñимволи заборонені.",dateSuchAs:"Введіть коректну дату {date}.",dateInFormatMDY:'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',email:'Введіть коректну адреÑу електронної пошти (наприклад "name@domain.com").',url:"Введіть коректне інтернет-поÑÐ¸Ð»Ð°Ð½Ð½Ñ (наприклад http://www.google.com).",currencyDollar:'Введіть Ñуму в доларах (наприклад "$100.00").',oneRequired:"Заповніть одне з полів.",errorPrefix:"Помилка: ",warningPrefix:"Увага: ",noSpace:"Пробіли заборонені.",reqChkByNode:"Ðе відмічено жодного варіанту.",requiredChk:"Це поле повинне бути віміченим.",reqChkByName:"Будь лаÑка, відмітьте {label}.",match:"Це поле повинно відповідати {matchName}",startDate:"початкова дата",endDate:"кінцева дата",currendDate:"ÑÑŒÐ¾Ð³Ð¾Ð´Ð½Ñ–ÑˆÐ½Ñ Ð´Ð°Ñ‚Ð°",afterDate:"Ð¦Ñ Ð´Ð°Ñ‚Ð° повинна бути такою ж, або пізнішою за {label}.",beforeDate:"Ð¦Ñ Ð´Ð°Ñ‚Ð° повинна бути такою ж, або ранішою за {label}.",startMonth:"Будь лаÑка, виберіть початковий міÑÑць",sameMonth:"Ці дати повинні відноÑитиÑÑŒ одного Ñ– того ж міÑÑцÑ. Будь лаÑка, змініть одну з них.",creditcard:"Ðомер кредитної карти введений неправильно. Будь лаÑка, перевірте його. Введено {length} Ñимволів."}); -Locale.define("zh-CHS","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],months_abbr:["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"ä¸åˆ°1分钟å‰",minuteAgo:"大约1分钟å‰",minutesAgo:"{delta}分钟之å‰",hourAgo:"大约1å°æ—¶å‰",hoursAgo:"大约{delta}å°æ—¶å‰",dayAgo:"1天å‰",daysAgo:"{delta}天å‰",weekAgo:"1星期å‰",weeksAgo:"{delta}星期å‰",monthAgo:"1个月å‰",monthsAgo:"{delta}个月å‰",yearAgo:"1å¹´å‰",yearsAgo:"{delta}å¹´å‰",lessThanMinuteUntil:"从现在开始ä¸åˆ°1分钟",minuteUntil:"从现在开始約1分钟",minutesUntil:"从现在开始约{delta}分钟",hourUntil:"从现在开始1å°æ—¶",hoursUntil:"从现在开始约{delta}å°æ—¶",dayUntil:"从现在开始1天",daysUntil:"从现在开始{delta}天",weekUntil:"从现在开始1星期",weeksUntil:"从现在开始{delta}星期",monthUntil:"从现在开始一个月",monthsUntil:"从现在开始{delta}个月",yearUntil:"从现在开始1å¹´",yearsUntil:"从现在开始{delta}å¹´"}); -Locale.define("zh-CHT","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","乿œˆ","åæœˆ","å一月","å二月"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:"",lessThanMinuteAgo:"ä¸åˆ°1分é˜å‰",minuteAgo:"大約1分é˜å‰",minutesAgo:"{delta}分é˜ä¹‹å‰",hourAgo:"大約1å°æ™‚å‰",hoursAgo:"大約{delta}å°æ™‚å‰",dayAgo:"1天å‰",daysAgo:"{delta}天å‰",weekAgo:"1星期å‰",weeksAgo:"{delta}星期å‰",monthAgo:"1个月å‰",monthsAgo:"{delta}个月å‰",yearAgo:"1å¹´å‰",yearsAgo:"{delta}å¹´å‰",lessThanMinuteUntil:"從ç¾åœ¨é–‹å§‹ä¸åˆ°1分é˜",minuteUntil:"從ç¾åœ¨é–‹å§‹ç´„1分é˜",minutesUntil:"從ç¾åœ¨é–‹å§‹ç´„{delta}分é˜",hourUntil:"從ç¾åœ¨é–‹å§‹1å°æ™‚",hoursUntil:"從ç¾åœ¨é–‹å§‹ç´„{delta}å°æ™‚",dayUntil:"從ç¾åœ¨é–‹å§‹1天",daysUntil:"從ç¾åœ¨é–‹å§‹{delta}天",weekUntil:"從ç¾åœ¨é–‹å§‹1星期",weeksUntil:"從ç¾åœ¨é–‹å§‹{delta}星期",monthUntil:"從ç¾åœ¨é–‹å§‹ä¸€å€‹æœˆ",monthsUntil:"從ç¾åœ¨é–‹å§‹{delta}個月",yearUntil:"從ç¾åœ¨é–‹å§‹1å¹´",yearsUntil:"從ç¾åœ¨é–‹å§‹{delta}å¹´"}); -Locale.define("zh-CHS","FormValidator",{required:"此项必填。",minLength:"请至少输入 {minLength} 个字符 (已输入 {length} 个)。",maxLength:"最多åªèƒ½è¾“å…¥ {maxLength} 个字符 (已输入 {length} 个)。",integer:'请输入一个整数,ä¸èƒ½åŒ…å«å°æ•°ç‚¹ã€‚例如:"1", "200"。',numeric:'请输入一个数字,例如:"1", "1.1", "-1", "-1.1"。',digits:"请输入由数字和标点符å·ç»„æˆçš„内容。例如电è¯å·ç ã€‚",alpha:"请输入 A-Z çš„ 26 个字æ¯ï¼Œä¸èƒ½åŒ…å«ç©ºæ ¼æˆ–任何其他字符。",alphanum:"请输入 A-Z çš„ 26 ä¸ªå­—æ¯æˆ– 0-9 çš„ 10 个数字,ä¸èƒ½åŒ…å«ç©ºæ ¼æˆ–任何其他字符。",dateSuchAs:"è¯·è¾“å…¥åˆæ³•的日期格å¼ï¼Œå¦‚:{date}。",dateInFormatMDY:'è¯·è¾“å…¥åˆæ³•的日期格å¼ï¼Œä¾‹å¦‚:YYYY-MM-DD ("2010-12-31")。',email:'è¯·è¾“å…¥åˆæ³•的电å­ä¿¡ç®±åœ°å€ï¼Œä¾‹å¦‚:"fred@domain.com"。',url:"è¯·è¾“å…¥åˆæ³•çš„ Url 地å€ï¼Œä¾‹å¦‚:http://www.google.com。",currencyDollar:"è¯·è¾“å…¥åˆæ³•的货å¸ç¬¦å·ï¼Œä¾‹å¦‚:¥100.0",oneRequired:"请至少选择一项。",errorPrefix:"错误:",warningPrefix:"警告:",noSpace:"ä¸èƒ½åŒ…å«ç©ºæ ¼ã€‚",reqChkByNode:"未选择任何内容。",requiredChk:"此项必填。",reqChkByName:"请选择 {label}.",match:"必须与{matchName}相匹é…",startDate:"起始日期",endDate:"ç»“æŸæ—¥æœŸ",currendDate:"当剿—¥æœŸ",afterDate:"日期必须等于或晚于 {label}.",beforeDate:"日期必须早于或等于 {label}.",startMonth:"请选择起始月份",sameMonth:"您必须修改两个日期中的一个,以确ä¿å®ƒä»¬åœ¨åŒä¸€æœˆä»½ã€‚",creditcard:"您输入的信用å¡å·ç ä¸æ­£ç¡®ã€‚当å‰å·²è¾“å…¥{length}个字符。"}); -Locale.define("zh-CHT","FormValidator",{required:"此項必填。 ",minLength:"請至少輸入{minLength} 個字符(已輸入{length} 個)。 ",maxLength:"最多åªèƒ½è¼¸å…¥{maxLength} 個字符(已輸入{length} 個)。 ",integer:'請輸入一個整數,ä¸èƒ½åŒ…å«å°æ•¸é»žã€‚例如:"1", "200"。 ',numeric:'請輸入一個數字,例如:"1", "1.1", "-1", "-1.1"。 ',digits:"請輸入由數字和標點符號組æˆçš„內容。例如電話號碼。 ",alpha:"請輸入AZ çš„26 個字æ¯ï¼Œä¸èƒ½åŒ…å«ç©ºæ ¼æˆ–任何其他字符。 ",alphanum:"請輸入AZ çš„26 å€‹å­—æ¯æˆ–0-9 çš„10 個數字,ä¸èƒ½åŒ…å«ç©ºæ ¼æˆ–任何其他字符。 ",dateSuchAs:"è«‹è¼¸å…¥åˆæ³•的日期格å¼ï¼Œå¦‚:{date}。 ",dateInFormatMDY:'è«‹è¼¸å…¥åˆæ³•的日期格å¼ï¼Œä¾‹å¦‚:YYYY-MM-DD ("2010-12-31")。 ',email:'è«‹è¼¸å…¥åˆæ³•的電å­ä¿¡ç®±åœ°å€ï¼Œä¾‹å¦‚:"fred@domain.com"。 ',url:"è«‹è¼¸å…¥åˆæ³•çš„Url 地å€ï¼Œä¾‹å¦‚:http://www.google.com。 ",currencyDollar:"è«‹è¼¸å…¥åˆæ³•的貨幣符號,例如:¥100.0",oneRequired:"è«‹è‡³å°‘é¸æ“‡ä¸€é …。 ",errorPrefix:"錯誤:",warningPrefix:"警告:",noSpace:"ä¸èƒ½åŒ…å«ç©ºæ ¼ã€‚ ",reqChkByNode:"æœªé¸æ“‡ä»»ä½•內容。 ",requiredChk:"此項必填。 ",reqChkByName:"è«‹é¸æ“‡ {label}.",match:"必須與{matchName}相匹é…",startDate:"起始日期",endDate:"çµæŸæ—¥æœŸ",currendDate:"ç•¶å‰æ—¥æœŸ",afterDate:"日期必須等於或晚於{label}.",beforeDate:"日期必須早於或等於{label}.",startMonth:"è«‹é¸æ“‡èµ·å§‹æœˆä»½",sameMonth:"您必須修改兩個日期中的一個,以確ä¿å®ƒå€‘在åŒä¸€æœˆä»½ã€‚ ",creditcard:"您輸入的信用å¡è™Ÿç¢¼ä¸æ­£ç¢ºã€‚ç•¶å‰å·²è¼¸å…¥{length}個字符。 "}); -Form.Validator.add("validate-currency-yuan",{errorMsg:function(){return Form.Validator.getMsg("currencyYuan");},test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^ï¿¥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); -}}); - -// Resizable for content -var Resizable=new Class({Extends:Drag,options:{limit:{x:[0,null],y:[0,null]},mode:'horizontal',addToResizableLimits:true,cookie:false},initialize:function(element,options){this.parent(element,options);this.parentElement=this.element.getParent();if(this.options.mode=='horizontal'){this.isHorizontal=true;this.options.modifiers.y=false;this.firstProperty='width';this.handleSize=this.element.getSize().x;if(this.options.invert){this.first=this.element.getNext();this.second=this.element.getPrevious();this.secondProperty='right';this.options.modifiers.x='right';}else{this.first=this.element.getPrevious();this.second=this.element.getNext();this.secondProperty='left';this.options.modifiers.x='left';}}else{this.isHorizontal=false;this.options.modifiers.x=false;this.firstProperty='height';this.handleSize=this.element.getSize().y;if(this.options.invert){this.first=this.element.getNext();this.second=this.element.getPrevious();this.secondProperty='bottom';this.options.modifiers.y='bottom';}else{this.first=this.element.getPrevious();this.second=this.element.getNext();this.secondProperty='top';this.options.modifiers.y='top';}} -if(this.options.addToResizableLimits){(this.isHorizontal)?ResizableLimits.horizontal.include(this):ResizableLimits.vertical.include(this);} -if(this.options.cookie){this.setFromCookie();this.addEvent('complete',this.setCookie.bind(this));}},drag:function(event){this.parent(event);if(this.isHorizontal){this.distance=(this.options.invert)?this.parentElement.getSize().x-this.element.getPosition(this.parentElement).x-(this.handleSize*2):this.element.getPosition(this.parentElement).x-this.handleSize;}else{this.distance=(this.options.invert)?this.parentElement.getSize().y-this.element.getPosition(this.parentElement).y-this.handleSize:this.element.getPosition(this.parentElement).y;} -this.set(this.distance,true);return this;},set:function(distance,fromDrag){this.first.setStyle(this.firstProperty,distance);this.second.setStyle(this.secondProperty,distance+this.handleSize);if(!fromDrag)this.element.setStyle(this.secondProperty,distance);this.fireEvent('set');return this;},setFromCookie:function(){var cookie=Cookie.read(this.options.cookie);if(cookie)this.set(cookie.toInt());return this;},setCookie:function(){Cookie.write(this.options.cookie,this.distance,{duration:30});return this;}});var ResizableLimits=new Hash({horizontal:[],vertical:[],setLimits:{all:function(){ResizableLimits.setLimits.vertical();ResizableLimits.setLimits.horizontal();return ResizableLimits;},horizontal:function(){ResizableLimits.horizontal.each(function(instance,index){if(instance.options.invert){var previous=ResizableLimits.horizontal[index-1];var limit=(previous)?instance.parentElement.getSize().x-previous.element.getPosition(instance.parentElement).x-(instance.handleSize*3):false;}else{var next=ResizableLimits.horizontal[index+1];var limit=(next)?next.element.getPosition(instance.parentElement).x-(instance.handleSize*2):false;} -if(limit)instance.options.limit.x[1]=limit;});return ResizableLimits},vertical:function(){ResizableLimits.vertical.each(function(instance,index){if(instance.options.invert){var previous=ResizableLimits.vertical[index-1];var limit=(previous)?instance.parentElement.getSize().y-previous.element.getPosition(previous.parentElement).y-(instance.handleSize*2):false;}else{var next=ResizableLimits.vertical[index+1];var limit=(next)?next.element.getPosition(next.parentElement).y-instance.handleSize:false;} -if(limit)instance.options.limit.y[1]=limit;});return ResizableLimits;}},attach:function(){ResizableLimits.setLimits.all();ResizableLimits.horizontal.each(function(instance){instance.addEvent('complete',ResizableLimits.setLimits.horizontal);});ResizableLimits.vertical.each(function(instance){instance.addEvent('complete',ResizableLimits.setLimits.vertical);});window.addEvent('resize',ResizableLimits.setLimits.all);return ResizableLimits}}); \ No newline at end of file From 0f85500a938903a6e3f3a24b1b6e6aa644c7d380 Mon Sep 17 00:00:00 2001 From: MKzero Date: Mon, 15 Apr 2013 17:52:53 -0700 Subject: [PATCH 39/61] Removed mootools functions from code --- html/background.html | 1 - html/menu.html | 2 - js/D3.js | 6 +- js/contentWorker.js | 373 +++++++++++++++++++++++-------------------- js/menu.js | 166 ++++++++++--------- manifest.json | 7 +- 6 files changed, 300 insertions(+), 255 deletions(-) diff --git a/html/background.html b/html/background.html index 37fb335..336f506 100644 --- a/html/background.html +++ b/html/background.html @@ -6,7 +6,6 @@ * @author Maik Kulbe * @copyright (c) 2010 Maik Kulbe */ --> - diff --git a/html/menu.html b/html/menu.html index 8113d5e..11658ac 100644 --- a/html/menu.html +++ b/html/menu.html @@ -191,6 +191,4 @@

d3coder

- - diff --git a/js/D3.js b/js/D3.js index 9377405..43b755f 100644 --- a/js/D3.js +++ b/js/D3.js @@ -156,8 +156,7 @@ var D3 = switch (type) { case 'console': text = D3.base64_encode(text); - - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); + chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); chrome.tabs.executeScript(null, {code:"console.log('d3coder:: FUNCTION: " + title + "');"}); @@ -176,7 +175,6 @@ var D3 = break; case 'div': chrome.tabs.insertCSS(null, {file: "styles/content.css"}); - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); window.setTimeout(function() { @@ -189,8 +187,6 @@ var D3 = break; case 'inplace': - // TODO: replace text in page - chrome.tabs.executeScript(null, {file:'js/mootools.js'}); chrome.tabs.executeScript(null, {file:'js/contentWorker.js'}); window.setTimeout(function() { diff --git a/js/contentWorker.js b/js/contentWorker.js index 0086ac3..89d2e62 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -4,92 +4,127 @@ * @copyright (c) 2010 Maik Kulbe */ D3content = { + createDiv: function(title, text) + { + text = D3content.base64_decode(text); + var hr = document.createElement('hr'), + infoDiv, + infoText, + infoHeading, + infoClipboardCopy, + backUrl, + resizeHandle, + heading, + closeElem, + centerBottomResize; - createDiv: function(title, text) - { - text = D3content.base64_decode(text); - var hr = new Element('hr'); - - if(!$('D3-inject')) { - var infoDiv = new Element('div').set({ - //Any other property uses Element:setProperty. - 'id': 'D3-inject', - 'class': 'content' - }); - var backUrl = chrome.extension.getURL("images/grip.png"); - var resizeHandle = new Element('div').set({ - 'id': 'D3-inject_handle', - 'class': 'handle vertical', - 'background': 'background: #333 url(\'' + backUrl + '\') no-repeat;' - }); - var heading = new Element('h1').set({ - 'id': 'D3-inject-heading', - 'text': 'd3coder Output:' - }); - var closeElem = new Element('a').set({ - 'id': 'D3-inject-close', - 'text': 'CLOSE [X]' - }); - - $(document.body).grab(resizeHandle); - $(document.body).grab(infoDiv); - $('D3-inject').grab(closeElem); - $('D3-inject').grab(heading); - $('D3-inject').grab(hr); - - $('D3-inject-close').addEvent('click', function(){ - $('D3-inject_handle').destroy(); - $('D3-inject').destroy(); - $('D3-inject-close').destroy(); - }); - - centerBottomResize = new Resizable('D3-inject_handle',{ - invert: true, - mode: 'vertical', - cookie: 'centerBottomResize' - }); - - ResizableLimits.attach(); - } else { - var infoDiv = $('D3-inject'); - } - var infoHeading = new Element('h3').set({ - 'class': 'D3-inject-heading', - 'text': title - }); - - var infoText = new Element('pre').set({ - 'class': 'D3-inject-text', - 'text': text - }); - - var infoClipboardCopy = new Element('a').set({ - 'href': 'javascript:void', - 'text': ' ', - 'styles': { - 'width': 20, - 'height': 20, - 'background-image': 'url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAQFBgf/xAAmEAABAwQCAQMFAAAAAAAAAAABAgMEAAUGERIhYRMiMQcjY5Gz/8QAFQEBAQAAAAAAAAAAAAAAAAAABAP/xAAcEQACAQUBAAAAAAAAAAAAAAAAAQIDERIx0SL/2gAMAwEAAhEDEQA/AOnZVerjbp1rg2lmOt+cp3an0qUEpQkKOgkgk6J/XmqGdkWR2aG5NdQy+y2pBeS/FcbI2dew70OyOjvXfZq1ydfHNsS8ql/zFQ/qOtQw24FSSPez8j8go8m8Zu+uIvFK8FbfTcUpSkEDPZNjMa9ORpD0yfHejKV6TkZ7gU8hpWjo/OhVCnBIkz7Uy83x9kkcmnZnJKu99jj4pSi1EsxNN+TeNN+kgJ5rX5WdmlKUoMf/2Q==)', - 'position': 'absolute', - 'top': 0, - 'right': 0 - }, - 'title': 'Copy last conversion to clipboard', - 'id': 'D3-clipboard-button' - }); - - var hr = new Element('hr'); + if(!document.getElementById('D3-inject')) { + infoDiv = document.createElement('div'); + infoDiv.id = 'D3-inject'; + infoDiv.className = 'content'; + + backUrl = chrome.extension.getURL("images/grip.png"), + + resizeHandle = document.createElement('div'); + resizeHandle.id = 'D3-inject_handle'; + resizeHandle.className = 'handle vertical'; + resizeHandle.style.backgroundColor = '#333'; + resizeHandle.style.backgroundImage = 'url(\'' + backUrl + '\')'; + resizeHandle.style.backgroundRepeat = ' no-repeat;'; + + heading = document.createElement('h1'); + heading.id = 'D3-inject-heading'; + heading.innerText = 'd3coder Output:'; + + closeElem = document.createElement('a'); + closeElem.id = 'D3-inject-close'; + closeElem.innerText = 'CLOSE [X]'; + + document.body.appendChild(resizeHandle); + document.body.appendChild(infoDiv); + document.getElementById('D3-inject').appendChild(closeElem); + document.getElementById('D3-inject').appendChild(heading); + document.getElementById('D3-inject').appendChild(hr); + + document.getElementById('D3-inject-close').addEventListener('click', function(){ + document.getElementById('D3-inject_handle').parentNode.removeChild(); + document.getElementById('D3-inject').parentNode.removeChild(); + document.getElementById('D3-inject-close').parentNode.removeChild(); + }); + +var startX, startY, startWidth, startHeight; + +function initDrag(e) { + startX = e.clientX; + startY = e.clientY; + startWidth = parseInt(document.defaultView.getComputedStyle(p).width, 10); + startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10); + document.documentElement.addEventListener('mousemove', doDrag, false); + document.documentElement.addEventListener('mouseup', stopDrag, false); +} + +function doDrag(e) { + document.getElementById('D3-inject_handle').style.width = (startWidth + e.clientX - startX) + 'px'; + document.getElementById('D3-inject_handle').style.height = (startHeight + e.clientY - startY) + 'px'; +} + +function stopDrag(e) { + document.documentElement.removeEventListener('mousemove', doDrag, false); + document.documentElement.removeEventListener('mouseup', stopDrag, false); +} + + document.getElementById('D3-inject_handle').addEventListener('click', function init() { + document.getElementById('D3-inject_handle').removeEventListener('click', init, false); + document.getElementById('D3-inject_handle').className = document.getElementById('D3-inject_handle').className + ' resizable'; + var resizer = document.createElement('div'); + resizer.className = 'resizer'; + document.getElementById('D3-inject_handle').appendChild(resizer); + resizer.addEventListener('mousedown', initDrag, false); + }, false); + /*centerBottomResize = new Resizable('D3-inject_handle',{ + invert: true, + mode: 'vertical', + cookie: 'centerBottomResize' + }); + + ResizableLimits.attach();*/ + } else { + infoDiv = document.getElementById('D3-inject'); + } + + infoHeading = document.createElement('h3'); + infoHeading.className = 'D3-inject-heading'; + infoHeading.innerText = title; + + infoText = document.createElement('pre'); + infoText.className = 'D3-inject-text'; + infoText.innerText = text; + + infoClipboardCopy = document.createElement('a'); + infoClipboardCopy.href = 'javascript:void'; + infoClipboardCopy.innerText = ' '; + infoClipboardCopy.style.width = 20; + infoClipboardCopy.style.height = 20; + infoClipboardCopy.style.backgroundImage = 'url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAQFBgf/xAAmEAABAwQCAQMFAAAAAAAAAAABAgMEAAUGERIhYRMiMQcjY5Gz/8QAFQEBAQAAAAAAAAAAAAAAAAAABAP/xAAcEQACAQUBAAAAAAAAAAAAAAAAAQIDERIx0SL/2gAMAwEAAhEDEQA/AOnZVerjbp1rg2lmOt+cp3an0qUEpQkKOgkgk6J/XmqGdkWR2aG5NdQy+y2pBeS/FcbI2dew70OyOjvXfZq1ydfHNsS8ql/zFQ/qOtQw24FSSPez8j8go8m8Zu+uIvFK8FbfTcUpSkEDPZNjMa9ORpD0yfHejKV6TkZ7gU8hpWjo/OhVCnBIkz7Uy83x9kkcmnZnJKu99jj4pSi1EsxNN+TeNN+kgJ5rX5WdmlKUoMf/2Q==)'; + infoClipboardCopy.style.position = 'absolute'; + infoClipboardCopy.style.top = 0; + infoClipboardCopy.style.right = 0; + infoClipboardCopy.title = 'Copy last conversion to clipboard'; + infoClipboardCopy.id = 'D3-clipboard-button'; + + hr = document.createElement('hr'); - $(infoDiv).grab(infoHeading); - $(infoDiv).grab(infoClipboardCopy); - $(infoDiv).grab(infoText); - $(infoDiv).grab(hr); - - $('D3-clipboard-button').addEvent('click', function(){ - chrome.extension.sendRequest({command: "doCopy"}, function(response) { - console.log(response); - }); - /* + infoDiv.appendChild(infoHeading); + infoDiv.appendChild(infoClipboardCopy); + infoDiv.appendChild(infoText); + infoDiv.appendChild(hr); + + document.getElementById('D3-clipboard-button').addEventListener('click', function(){ + chrome.extension.sendRequest({command: "doCopy"}, function(response) { + console.log(response); + }); + + /* var bg = chrome.extension.getBackgroundPage(); var clipboard = bg.document.getElementById("clipboard"); clipboard.style.display = "block"; @@ -97,92 +132,90 @@ D3content = { clipboard.select(); bg.document.execCommand("Copy"); clipboard.style.display = "none"; - */ - }); + */ + }); + }, + replaceText: function(text) + { + var selection, range; - }, - - replaceText: function(text) - { - var selection, range; - - text = D3content.base64_decode(text); - if (window.getSelection) { - selection = window.getSelection(); - if (selection.rangeCount) { - range = selection.getRangeAt(0); - range.deleteContents(); - range.insertNode(document.createTextNode(text)); - } - } else if (document.selection && document.selection.createRange) { - range = document.selection.createRange(); - range.text = text; + text = D3content.base64_decode(text); + if (window.getSelection) { + selection = window.getSelection(); + if (selection.rangeCount) { + range = selection.getRangeAt(0); + range.deleteContents(); + range.insertNode(document.createTextNode(text)); } - }, - - logConsole: function(text) - { - console.log(D3content.base64_decode(text)); - }, - base64_decode: function (data) { - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; - - if (!data) { - return data; - } - - data += ''; - - do { // unpack four hexets into three octets using index points in b64 - h1 = b64.indexOf(data.charAt(i++)); - h2 = b64.indexOf(data.charAt(i++)); - h3 = b64.indexOf(data.charAt(i++)); - h4 = b64.indexOf(data.charAt(i++)); - - bits = h1<<18 | h2<<12 | h3<<6 | h4; - - o1 = bits>>16 & 0xff; - o2 = bits>>8 & 0xff; - o3 = bits & 0xff; - - if (h3 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1); - } else if (h4 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1, o2); - } else { - tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); - } - } while (i < data.length); - - dec = tmp_arr.join(''); - dec = this.utf8_decode(dec); - - return dec; - }, - utf8_decode: function ( str_data ) { - var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; - - str_data += ''; - - while ( i < str_data.length ) { - c1 = str_data.charCodeAt(i); - if (c1 < 128) { - tmp_arr[ac++] = String.fromCharCode(c1); - i++; - } else if ((c1 > 191) && (c1 < 224)) { - c2 = str_data.charCodeAt(i+1); - tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = str_data.charCodeAt(i+1); - c3 = str_data.charCodeAt(i+2); - tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - - return tmp_arr.join(''); - } -}; \ No newline at end of file + } else if (document.selection && document.selection.createRange) { + range = document.selection.createRange(); + range.text = text; + } + }, + + logConsole: function(text) + { + console.log(D3content.base64_decode(text)); + }, + base64_decode: function (data) { + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; + + if (!data) { + return data; + } + + data += ''; + + do { // unpack four hexets into three octets using index points in b64 + h1 = b64.indexOf(data.charAt(i++)); + h2 = b64.indexOf(data.charAt(i++)); + h3 = b64.indexOf(data.charAt(i++)); + h4 = b64.indexOf(data.charAt(i++)); + + bits = h1<<18 | h2<<12 | h3<<6 | h4; + + o1 = bits>>16 & 0xff; + o2 = bits>>8 & 0xff; + o3 = bits & 0xff; + + if (h3 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1); + } else if (h4 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1, o2); + } else { + tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); + } + } while (i < data.length); + + dec = tmp_arr.join(''); + dec = this.utf8_decode(dec); + + return dec; + }, + utf8_decode: function ( str_data ) { + var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0; + + str_data += ''; + + while ( i < str_data.length ) { + c1 = str_data.charCodeAt(i); + if (c1 < 128) { + tmp_arr[ac++] = String.fromCharCode(c1); + i++; + } else if ((c1 > 191) && (c1 < 224)) { + c2 = str_data.charCodeAt(i+1); + tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = str_data.charCodeAt(i+1); + c3 = str_data.charCodeAt(i+2); + tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return tmp_arr.join(''); + } +}; diff --git a/js/menu.js b/js/menu.js index e872909..bd902d1 100644 --- a/js/menu.js +++ b/js/menu.js @@ -75,11 +75,14 @@ var D3menu = if(!localStorage.getItem("message_automatic_clipboardcopy")) localStorage.setItem("message_automatic_clipboardcopy", "0"); - D3menu.checkboxes.each(function(el){ - if(localStorage.getItem(el) != "0" && localStorage.getItem(el) != "1") { - localStorage.setItem(el, "1"); + for (el in D3menu.checkboxes) { + if(D3menu.checkboxes.hasOwnProperty(el)) { + if(localStorage.getItem(el) != "0" && localStorage.getItem(el) != "1") { + localStorage.setItem(el, "1"); + } } - }); + } + localStorage.setItem('D3installed'+this.version, 'true'); if(localStorage.getItem('D3lastversion')) { localStorage.removeItem('D3installed'+localStorage.getItem('lastversion')); @@ -98,33 +101,36 @@ var D3menu = alert = true; } var value = false; - D3menu.options.each(function(option){ - if($( option ) && $( option ).checked == true) { - value = $( option ).value; - } - }); + for (option in D3menu.options) { + if(D3menu.options.hasOwnProperty(option)) { + if(document.getElementById(D3menu.options[option]) && document.getElementById(D3menu.options[option]).checked == true) { + value = document.getElementById(D3menu.options[option]).value; + } + } + } + localStorage.setItem("message_type", value ? value : "notifications"); - if($("message_automatic_clipboardcopy").checked == true) { + if(document.getElementById("message_automatic_clipboardcopy").checked == true) { localStorage.setItem("message_automatic_clipboardcopy", 1); } else { localStorage.setItem("message_automatic_clipboardcopy", 0); } console.log('Updating functions'); - D3menu.checkboxes.each(function(option){ - var elem = $( option ); - var value = "0"; - if(elem.checked) { - value = elem.checked ? "1" : "0"; - } else { - value = "0"; - } - - localStorage.setItem(option, value); - }); + for (option in D3menu.checkboxes) { + if (D3menu.checkboxes.hasOwnProperty(option)) { + var elem = document.getElementById(D3menu.checkboxes[option]); + var value = "0"; + if(elem.checked) { + value = elem.checked ? "1" : "0"; + } else { + value = "0"; + } - console.log(localStorage); + localStorage.setItem(D3menu.checkboxes[option], value); + } + } }, /** @@ -137,26 +143,31 @@ var D3menu = var somethingChecked = false; if(localStorage.getItem("message_automatic_clipboardcopy") == 1) { - $("message_automatic_clipboardcopy").checked = true; + document.getElementById("message_automatic_clipboardcopy").checked = true; } else { - $("message_automatic_clipboardcopy").checked = false; + document.getElementById("message_automatic_clipboardcopy").checked = false; } - D3menu.options.each(function(option){ - var optionValue = $(option).value; - if(optionValue==type) { - $(option).checked = true; - somethingChecked = true; - } - }); + for (option in D3menu.options) { + if (D3menu.options.hasOwnProperty(option)) { + var optionValue = document.getElementById(D3menu.options[option]).value; + if(optionValue==type) { + document.getElementById(D3menu.options[option]).checked = true; + somethingChecked = true; + } + } + } + if(somethingChecked == false) { - $('message_type2').checked = true; + document.getElementById('message_type2').checked = true; } - D3menu.checkboxes.each(function(option){ - var value = localStorage.getItem(option) == 1 ? true : false; - var elem = $(option).checked = value; - }); + for (option in D3menu.checkboxes) { + if (D3menu.checkboxes.hasOwnProperty(option)) { + var value = localStorage.getItem(D3menu.checkboxes[option]) == 1 ? true : false; + var elem = document.getElementById(D3menu.checkboxes[option]).checked = value; + } + } }, /** @@ -164,77 +175,82 @@ var D3menu = * TODO: better code to switch between tabs than this massive block of JS */ messageTabShow: function(){ - $('message').style.display = ''; - $('message-tab').className = 'active'; + document.getElementById('message').style.display = ''; + document.getElementById('message-tab').className = 'active'; - $('context-menu').style.display = 'none'; - $('context-menu-tab').className = ''; + document.getElementById('context-menu').style.display = 'none'; + document.getElementById('context-menu-tab').className = ''; - $('misc').style.display = 'none'; - $('misc-tab').className = ''; + document.getElementById('misc').style.display = 'none'; + document.getElementById('misc-tab').className = ''; - $('credits').style.display = 'none'; - $('credits-tab').className = ''; + document.getElementById('credits').style.display = 'none'; + document.getElementById('credits-tab').className = ''; }, contextMenuTabShow: function(){ - $('message').style.display = 'none'; - $('message-tab').className = ''; + document.getElementById('message').style.display = 'none'; + document.getElementById('message-tab').className = ''; - $('context-menu').style.display = ''; - $('context-menu-tab').className = 'active'; + document.getElementById('context-menu').style.display = ''; + document.getElementById('context-menu-tab').className = 'active'; - $('misc').style.display = 'none'; - $('misc-tab').className = ''; + document.getElementById('misc').style.display = 'none'; + document.getElementById('misc-tab').className = ''; - $('credits').style.display = 'none'; - $('credits-tab').className = ''; + document.getElementById('credits').style.display = 'none'; + document.getElementById('credits-tab').className = ''; }, miscTabShow: function(){ - $('message').style.display = 'none'; - $('message-tab').className = ''; + document.getElementById('message').style.display = 'none'; + document.getElementById('message-tab').className = ''; - $('context-menu').style.display = 'none'; - $('context-menu-tab').className = ''; + document.getElementById('context-menu').style.display = 'none'; + document.getElementById('context-menu-tab').className = ''; - $('misc').style.display = ''; - $('misc-tab').className = 'active'; + document.getElementById('misc').style.display = ''; + document.getElementById('misc-tab').className = 'active'; - $('credits').style.display = 'none'; - $('credits-tab').className = ''; + document.getElementById('credits').style.display = 'none'; + document.getElementById('credits-tab').className = ''; }, creditsTabShow: function(){ - $('message').style.display = 'none'; - $('message-tab').className = ''; + document.getElementById('message').style.display = 'none'; + document.getElementById('message-tab').className = ''; - $('context-menu').style.display = 'none'; - $('context-menu-tab').className = ''; + document.getElementById('context-menu').style.display = 'none'; + document.getElementById('context-menu-tab').className = ''; - $('misc').style.display = 'none'; - $('misc-tab').className = ''; + document.getElementById('misc').style.display = 'none'; + document.getElementById('misc-tab').className = ''; - $('credits').style.display = ''; - $('credits-tab').className = 'active'; + document.getElementById('credits').style.display = ''; + document.getElementById('credits-tab').className = 'active'; } }; D3menu.init(); -$$('input').each(function(el){ - el.addEvent('change', function(){D3menu.save_options(false);}); -}); +var inputs = document.querySelectorAll('input'); +for (el in inputs) { + if (inputs.hasOwnProperty(el) && inputs[el] && el != 'length') { + inputs[el].addEventListener('change', function() { + D3menu.save_options(false); + }); + } +} -$('message-tab').addEvent('click', function(){ +document.getElementById('message-tab').addEventListener('click', function(){ D3menu.messageTabShow(); }); -$('context-menu-tab').addEvent('click', function(){ +document.getElementById('context-menu-tab').addEventListener('click', function(){ D3menu.contextMenuTabShow(); }); -$('misc-tab').addEvent('click', function(){ +document.getElementById('misc-tab').addEventListener('click', function(){ D3menu.miscTabShow(); }); -$('credits-tab').addEvent('click', function(){ +document.getElementById('credits-tab').addEventListener('click', function(){ D3menu.creditsTabShow(); }); diff --git a/manifest.json b/manifest.json index 6553c73..3b1e186 100644 --- a/manifest.json +++ b/manifest.json @@ -23,7 +23,10 @@ { "matches": ["*://*/*"], "css": ["styles/content.css"], - "js": ["js/mootools.js", "js/contentWorker.js"], + "js": ["js/contentWorker.js"], "all_frames": true - }] + }], + "web_accessible_resources": [ + "images/grip.png" + ] } From ce1328ba659bd57c7c22e09947623ea24f50ee39 Mon Sep 17 00:00:00 2001 From: MKzero Date: Mon, 15 Apr 2013 17:57:20 -0700 Subject: [PATCH 40/61] Updated README --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 3b1e186..5adf670 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.3.0", + "version": "1.4.0", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ From b0043d83ebba6ae366355815bbb6f2dfad0521c5 Mon Sep 17 00:00:00 2001 From: MKzero Date: Mon, 15 Apr 2013 18:11:02 -0700 Subject: [PATCH 41/61] Revert "Updated README" This reverts commit ce1328ba659bd57c7c22e09947623ea24f50ee39. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 5adf670..3b1e186 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "d3coder", - "version": "1.4.0", + "version": "1.3.0", "description": "Encoding/Decoding Plugin for various types of encoding like base64, rot13 or unix timestamp conversion", "options_page": "html/menu.html", "permissions": [ From e87f1f06b634a4b5867e9788a37121cabe9ac442 Mon Sep 17 00:00:00 2001 From: MKzero Date: Mon, 15 Apr 2013 18:12:58 -0700 Subject: [PATCH 42/61] Resizer needs update to work with pure JS --- js/contentWorker.js | 48 +++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/js/contentWorker.js b/js/contentWorker.js index 89d2e62..04e6dfb 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -47,32 +47,10 @@ D3content = { document.getElementById('D3-inject').appendChild(hr); document.getElementById('D3-inject-close').addEventListener('click', function(){ - document.getElementById('D3-inject_handle').parentNode.removeChild(); document.getElementById('D3-inject').parentNode.removeChild(); document.getElementById('D3-inject-close').parentNode.removeChild(); }); -var startX, startY, startWidth, startHeight; - -function initDrag(e) { - startX = e.clientX; - startY = e.clientY; - startWidth = parseInt(document.defaultView.getComputedStyle(p).width, 10); - startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10); - document.documentElement.addEventListener('mousemove', doDrag, false); - document.documentElement.addEventListener('mouseup', stopDrag, false); -} - -function doDrag(e) { - document.getElementById('D3-inject_handle').style.width = (startWidth + e.clientX - startX) + 'px'; - document.getElementById('D3-inject_handle').style.height = (startHeight + e.clientY - startY) + 'px'; -} - -function stopDrag(e) { - document.documentElement.removeEventListener('mousemove', doDrag, false); - document.documentElement.removeEventListener('mouseup', stopDrag, false); -} - document.getElementById('D3-inject_handle').addEventListener('click', function init() { document.getElementById('D3-inject_handle').removeEventListener('click', init, false); document.getElementById('D3-inject_handle').className = document.getElementById('D3-inject_handle').className + ' resizable'; @@ -81,13 +59,27 @@ function stopDrag(e) { document.getElementById('D3-inject_handle').appendChild(resizer); resizer.addEventListener('mousedown', initDrag, false); }, false); - /*centerBottomResize = new Resizable('D3-inject_handle',{ - invert: true, - mode: 'vertical', - cookie: 'centerBottomResize' - }); - ResizableLimits.attach();*/ +var startX, startY, startWidth, startHeight; + + function initDrag(e) { + startX = e.clientX; + startY = e.clientY; + startWidth = parseInt(document.defaultView.getComputedStyle(p).width, 10); + startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10); + document.documentElement.addEventListener('mousemove', doDrag, false); + document.documentElement.addEventListener('mouseup', stopDrag, false); + } + + function doDrag(e) { + document.getElementById('D3-inject_handle').style.width = (startWidth + e.clientX - startX) + 'px'; + document.getElementById('D3-inject_handle').style.height = (startHeight + e.clientY - startY) + 'px'; + } + + function stopDrag(e) { + document.documentElement.removeEventListener('mousemove', doDrag, false); + document.documentElement.removeEventListener('mouseup', stopDrag, false); + } } else { infoDiv = document.getElementById('D3-inject'); } From b982e3c53b01d0592c0a5fc6c8a1a059456d4ab2 Mon Sep 17 00:00:00 2001 From: MKzero Date: Tue, 16 Apr 2013 15:23:49 -0700 Subject: [PATCH 43/61] Fixed drag resizing --- js/contentWorker.js | 59 ++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/js/contentWorker.js b/js/contentWorker.js index 04e6dfb..37f3a69 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -16,7 +16,11 @@ D3content = { resizeHandle, heading, closeElem, - centerBottomResize; + centerBottomResize, + startX, + startY, + startWidth, + startHeight; if(!document.getElementById('D3-inject')) { infoDiv = document.createElement('div'); @@ -51,34 +55,35 @@ D3content = { document.getElementById('D3-inject-close').parentNode.removeChild(); }); - document.getElementById('D3-inject_handle').addEventListener('click', function init() { - document.getElementById('D3-inject_handle').removeEventListener('click', init, false); - document.getElementById('D3-inject_handle').className = document.getElementById('D3-inject_handle').className + ' resizable'; - var resizer = document.createElement('div'); - resizer.className = 'resizer'; - document.getElementById('D3-inject_handle').appendChild(resizer); - resizer.addEventListener('mousedown', initDrag, false); - }, false); - -var startX, startY, startWidth, startHeight; + document.getElementById('D3-inject_handle').addEventListener('mousedown', initDrag, false); function initDrag(e) { - startX = e.clientX; - startY = e.clientY; - startWidth = parseInt(document.defaultView.getComputedStyle(p).width, 10); - startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10); - document.documentElement.addEventListener('mousemove', doDrag, false); - document.documentElement.addEventListener('mouseup', stopDrag, false); - } - - function doDrag(e) { - document.getElementById('D3-inject_handle').style.width = (startWidth + e.clientX - startX) + 'px'; - document.getElementById('D3-inject_handle').style.height = (startHeight + e.clientY - startY) + 'px'; - } - - function stopDrag(e) { - document.documentElement.removeEventListener('mousemove', doDrag, false); - document.documentElement.removeEventListener('mouseup', stopDrag, false); + function doDrag(e) { + var y = startHeight + (startY - e.clientY); + if (y < 100) { + return; + } + + document.getElementById('D3-inject').style.height = + y + 'px'; + document.getElementById('D3-inject_handle').style.bottom = + y + 'px'; + } + + function stopDrag(e) { + document.documentElement.removeEventListener('mousemove', doDrag, false); + document.documentElement.removeEventListener('mouseup', stopDrag, false); + } + + startY = e.clientY; + startHeight = parseInt( + document.defaultView.getComputedStyle( + document.getElementById('D3-inject') + ).height, + 10); + + document.documentElement.addEventListener('mousemove', doDrag, false); + document.documentElement.addEventListener('mouseup', stopDrag, false); } } else { infoDiv = document.getElementById('D3-inject'); From 48b682fa5880834fd2672359e62a0449aa9ccb3c Mon Sep 17 00:00:00 2001 From: MKzero Date: Tue, 16 Apr 2013 15:30:34 -0700 Subject: [PATCH 44/61] Updated dragging with disabled text selection --- js/contentWorker.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/contentWorker.js b/js/contentWorker.js index 37f3a69..a83383a 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -58,6 +58,9 @@ D3content = { document.getElementById('D3-inject_handle').addEventListener('mousedown', initDrag, false); function initDrag(e) { + var oldSelectStart = document.body.onselectstart; + document.body.onselectstart = function() {return false;}; + function doDrag(e) { var y = startHeight + (startY - e.clientY); if (y < 100) { @@ -73,6 +76,7 @@ D3content = { function stopDrag(e) { document.documentElement.removeEventListener('mousemove', doDrag, false); document.documentElement.removeEventListener('mouseup', stopDrag, false); + document.body.onselectstart=oldSelectStart; } startY = e.clientY; From d57894926941039cf9eb433d559cea511262fb16 Mon Sep 17 00:00:00 2001 From: MKzero Date: Tue, 16 Apr 2013 15:37:20 -0700 Subject: [PATCH 45/61] Fixed broken content div removal --- js/contentWorker.js | 4 ++-- styles/content.css | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/js/contentWorker.js b/js/contentWorker.js index a83383a..2d9c80f 100644 --- a/js/contentWorker.js +++ b/js/contentWorker.js @@ -51,8 +51,8 @@ D3content = { document.getElementById('D3-inject').appendChild(hr); document.getElementById('D3-inject-close').addEventListener('click', function(){ - document.getElementById('D3-inject').parentNode.removeChild(); - document.getElementById('D3-inject-close').parentNode.removeChild(); + document.getElementById('D3-inject_handle').parentNode.removeChild(document.getElementById('D3-inject_handle')); + document.getElementById('D3-inject').parentNode.removeChild(document.getElementById('D3-inject')); }); document.getElementById('D3-inject_handle').addEventListener('mousedown', initDrag, false); diff --git a/styles/content.css b/styles/content.css index 7420184..f825ed3 100644 --- a/styles/content.css +++ b/styles/content.css @@ -23,6 +23,7 @@ z-index: 1100; float: right; margin-right: 30px; + cursor: pointer; } #D3-inject-heading @@ -57,4 +58,4 @@ div.handle.vertical { bottom: 200px; z-index: 1002; position: fixed; -} \ No newline at end of file +} From 26eccb9f9d5c3f09e44319b476c009712d223f62 Mon Sep 17 00:00:00 2001 From: MKzero Date: Tue, 16 Apr 2013 17:46:57 -0700 Subject: [PATCH 46/61] Refectored menu page scripts and styles --- README.md | 4 ++ html/menu.html | 35 ++++------ js/menu.js | 104 ++++++++++----------------- styles/menu.css | 182 ++++++++++-------------------------------------- 4 files changed, 92 insertions(+), 233 deletions(-) diff --git a/README.md b/README.md index b57c548..e66b21a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ CHANGELOG ============================= +2.0.0 +Rewrite of core code to drop library +Updated options page theme + 1.3.0 Feature: New menu for direct in-clipboard-conversion diff --git a/html/menu.html b/html/menu.html index 11658ac..2b140a6 100644 --- a/html/menu.html +++ b/html/menu.html @@ -7,6 +7,20 @@ --> + +
@@ -167,28 +181,7 @@

Credits

Clipboard icon in div-view by Mihaiciuc Bogdan.
- - -
- - - - diff --git a/js/menu.js b/js/menu.js index bd902d1..a4e1976 100644 --- a/js/menu.js +++ b/js/menu.js @@ -1,5 +1,5 @@ /** - * @version 1.0 + * @version 2.0 * @author Maik Kulbe * @copyright (c) 2010 Maik Kulbe */ @@ -43,6 +43,14 @@ var D3menu = "functions_leet_decode", "functions_leet_encode", "functions_reverse"), + + tabs: [ + 'message', + 'context-menu', + 'misc', + 'credits' + ], + /** * initialization to collect startup errors @@ -174,57 +182,25 @@ var D3menu = * menu tab functions * TODO: better code to switch between tabs than this massive block of JS */ - messageTabShow: function(){ - document.getElementById('message').style.display = ''; - document.getElementById('message-tab').className = 'active'; - - document.getElementById('context-menu').style.display = 'none'; - document.getElementById('context-menu-tab').className = ''; - - document.getElementById('misc').style.display = 'none'; - document.getElementById('misc-tab').className = ''; - - document.getElementById('credits').style.display = 'none'; - document.getElementById('credits-tab').className = ''; - }, - contextMenuTabShow: function(){ - document.getElementById('message').style.display = 'none'; - document.getElementById('message-tab').className = ''; - - document.getElementById('context-menu').style.display = ''; - document.getElementById('context-menu-tab').className = 'active'; - - document.getElementById('misc').style.display = 'none'; - document.getElementById('misc-tab').className = ''; - - document.getElementById('credits').style.display = 'none'; - document.getElementById('credits-tab').className = ''; - }, - miscTabShow: function(){ - document.getElementById('message').style.display = 'none'; - document.getElementById('message-tab').className = ''; - - document.getElementById('context-menu').style.display = 'none'; - document.getElementById('context-menu-tab').className = ''; - - document.getElementById('misc').style.display = ''; - document.getElementById('misc-tab').className = 'active'; - - document.getElementById('credits').style.display = 'none'; - document.getElementById('credits-tab').className = ''; - }, - creditsTabShow: function(){ - document.getElementById('message').style.display = 'none'; - document.getElementById('message-tab').className = ''; - - document.getElementById('context-menu').style.display = 'none'; - document.getElementById('context-menu-tab').className = ''; - - document.getElementById('misc').style.display = 'none'; - document.getElementById('misc-tab').className = ''; - - document.getElementById('credits').style.display = ''; - document.getElementById('credits-tab').className = 'active'; + showTab: function(name) { + var deactivate = function(id) { + document.getElementById(id).style.display = 'none'; + document.getElementById(id+'-tab').className = ''; + }, + activate = function(id) { + document.getElementById(id).style.display = ''; + document.getElementById(id+'-tab').className = 'active'; + }; + + for (n in D3menu.tabs) { + if (D3menu.tabs.hasOwnProperty(n)) { + if (D3menu.tabs[n] !== name) { + deactivate(D3menu.tabs[n]); + } else { + activate(D3menu.tabs[n]) + } + } + } } }; @@ -239,18 +215,14 @@ for (el in inputs) { } } -document.getElementById('message-tab').addEventListener('click', function(){ - D3menu.messageTabShow(); -}); - -document.getElementById('context-menu-tab').addEventListener('click', function(){ - D3menu.contextMenuTabShow(); -}); - -document.getElementById('misc-tab').addEventListener('click', function(){ - D3menu.miscTabShow(); -}); +var listenerForTab = function(n) { + document.getElementById(n + '-tab').addEventListener('click', function () { + D3menu.showTab(n); + }); +} -document.getElementById('credits-tab').addEventListener('click', function(){ - D3menu.creditsTabShow(); -}); +for (tab in D3menu.tabs) { + if (D3menu.tabs.hasOwnProperty(tab)) { + listenerForTab(D3menu.tabs[tab]); + } +} diff --git a/styles/menu.css b/styles/menu.css index 8e400f7..50cf022 100644 --- a/styles/menu.css +++ b/styles/menu.css @@ -1,146 +1,36 @@ -/** - * @version 1.0 - * @author Maik Kulbe - * @copyright (c) 2010 Maik Kulbe - */ - -body -{ - padding: 0; - margin: 0; - margin: 0; - padding: 0; - height: 100%; -} -h1 -{ - -webkit-padding-end: 24px; - padding-top: 1em; - padding-bottom: 1em; - border-bottom: 1px solid #eeeeee; - -webkit-padding-start: 0; - font-size: 125%; - color: #54637f; - margin: 0; -} -blockquote -{ - padding: 1em; - background: #eeeeee; - border: 1px solid #54637f; - border-radius: 5px; -} -#menubar -{ - margin: 0; - width: 250px; - height: 100%; - position: absolute; - left: 0; - top: 0; - background: #ebeff9; -} - -#optionsFrame -{ - height: 100%; - width: 100%; - position: absolute; -} - -#options, #footer -{ - padding-left: 265px; -} - -#menu -{ - margin: 30px 0px 0px 0px; - -webkit-padding-start: 0px; -} - -#menubar-title -{ - font-size: 16px; - text-align: right; - padding-right: 30px; - margin-top: 15px; - font-weight: normal; - -} - -#menu li -{ - width: 240px; - clear: both; - text-align: right; - padding: 5px 10px 5px 0px; - list-style-type: none; - position: relative; - border: none; - cursor: pointer; - margin: 0; - color: #4b74d6; -} - -#menu .active -{ - background: -webkit-gradient( - linear, - left top, - right top, - color-stop(0.15, #ebeff9), - color-stop(1, #b3c4eb) - ); - font-weight: bold; - color: black; -} - -.label, .inputs -{ - margin: 5px 0px; -} -#buttons -{ - position: absolute; - left: 0px; - bottom: 30px; - text-align: center; - color: #54637f; -} -#buttons button -{ - background: none; - border: none; -} -.buttonlabel -{ - color: white; - font-size: 20px; - font-weight: bold; - margin-left: 62px; - margin-top: -39px; - position: absolute; - text-shadow: black 1px 1px 1px; -} - -.buttonlabel.pressed -{ - color: grey; - text-shadow: white 1px 1px 1px; -} - -#footer -{ - position: absolute; - bottom: 0px; - height: 100px; - left: 0px; - background: -webkit-gradient( - linear, - left top, - right top, - color-stop(0.5, #ebeff9), - color-stop(1, #FFFFFF) - ); -} \ No newline at end of file +html, body { + height: 100%; + width: 100%; + padding: 0; + margin: 0; +} + +body { + font-size: 75%; +} + +h1 { + color: rgb(92, 97, 102); + font-size: 1.5em; + font-weight: normal; + line-height: 1; + margin: 0 0 20px 0; + font-family: 'Segoe UI', Ubuntu, Tahoma, Arial, sans-serif; +} + +#menubar { + height: 100%; + left: 0; + position: absolute; + width: 155px; +} + +#optionsFrame { + left: 155px; + right: 0; + bottom: 0; + top: 0; + position: absolute; + overflow: auto; + height: 100%; +} From fde3a9d367ee7e45b3ab61017f7b11b037bfac81 Mon Sep 17 00:00:00 2001 From: MKzero Date: Tue, 16 Apr 2013 18:11:20 -0700 Subject: [PATCH 47/61] Updated menu list and coloring --- html/menu.html | 10 +++++----- js/menu.js | 2 ++ styles/menu.css | 52 +++++++++++++++++++++++++++++++++++++------------ 3 files changed, 47 insertions(+), 17 deletions(-) diff --git a/html/menu.html b/html/menu.html index 2b140a6..22c2016 100644 --- a/html/menu.html +++ b/html/menu.html @@ -30,23 +30,23 @@

Message Type:

- Using alert() +
- Using native notifications +
- Log to console +
- Adding an HTML element to the bottom of the site +
- Use the selection and replace the text in-place +
diff --git a/js/menu.js b/js/menu.js index a4e1976..41834da 100644 --- a/js/menu.js +++ b/js/menu.js @@ -185,10 +185,12 @@ var D3menu = showTab: function(name) { var deactivate = function(id) { document.getElementById(id).style.display = 'none'; + document.getElementById(id).style.opacity = '0'; document.getElementById(id+'-tab').className = ''; }, activate = function(id) { document.getElementById(id).style.display = ''; + document.getElementById(id).style.opacity = '1'; document.getElementById(id+'-tab').className = 'active'; }; diff --git a/styles/menu.css b/styles/menu.css index 50cf022..64a7c8b 100644 --- a/styles/menu.css +++ b/styles/menu.css @@ -7,6 +7,8 @@ html, body { body { font-size: 75%; + font-family: 'Segoe UI', Ubuntu, Tahoma, Arial, sans-serif; + color: #333; } h1 { @@ -15,22 +17,48 @@ h1 { font-weight: normal; line-height: 1; margin: 0 0 20px 0; - font-family: 'Segoe UI', Ubuntu, Tahoma, Arial, sans-serif; +} + +#menu li, #options label { + cursor: pointer; } #menubar { - height: 100%; - left: 0; - position: absolute; - width: 155px; + height: 100%; + left: 0; + position: absolute; + width: 155px; +} + +#menubar ul { + padding: 0; + margin: 0; + left: 0; +} + +#menubar li { + color: #999; + list-style-type: none; + -webkit-border-start: 6px solid transparent; + -webkit-padding-start: 18px; + -webkit-transition: all .3s linear; +} + +#menubar li.active { + color: #464e5a; + -webkit-border-start: 6px solid #464e5a; } #optionsFrame { - left: 155px; - right: 0; - bottom: 0; - top: 0; - position: absolute; - overflow: auto; - height: 100%; + left: 155px; + right: 0; + bottom: 0; + top: 0; + position: absolute; + overflow: auto; + height: 100%; +} + +#options > div { + -webkit-transition: all .3s linear; } From 2356c2c756009686c7d85757ebd56ea6c39ce04b Mon Sep 17 00:00:00 2001 From: MKzero Date: Wed, 17 Apr 2013 17:03:50 -0700 Subject: [PATCH 48/61] Updated options page to fit Chrome style --- html/menu.html | 6 ++--- styles/menu.css | 62 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/html/menu.html b/html/menu.html index 22c2016..3c14340 100644 --- a/html/menu.html +++ b/html/menu.html @@ -25,7 +25,7 @@

d3coder

-

Message Type:

+

Message Type

@@ -58,7 +58,7 @@

Message Type:

- -