Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Permission changes + bug fixes

  • Loading branch information...
commit a49d57995334fbb6b8c0c112f0c28876a77165c5 1 parent 72bf156
@kaepora kaepora authored
Showing with 11,035 additions and 10,948 deletions.
  1. 0  LICENSE.txt
  2. 0  Makefile
  3. 0  README.md
  4. 0  RESOURCES.md
  5. 0  release/README
  6. 0  release/cryptocat-chrome.zip
  7. 0  release/cryptocat-firefox.xpi
  8. +541 −541 src/chrome/css/style.css
  9. 0  src/chrome/img/add.png
  10. 0  src/chrome/img/available.png
  11. 0  src/chrome/img/away.png
  12. 0  src/chrome/img/bg.png
  13. 0  src/chrome/img/cryptocat.png
  14. 0  src/chrome/img/down.png
  15. 0  src/chrome/img/emoticat.png
  16. 0  src/chrome/img/error.png
  17. 0  src/chrome/img/favicon.gif
  18. 0  src/chrome/img/file.png
  19. 0  src/chrome/img/groupChat.png
  20. 0  src/chrome/img/icon-128.png
  21. 0  src/chrome/img/icon-16.png
  22. 0  src/chrome/img/icon-48.png
  23. 0  src/chrome/img/ios.png
  24. 0  src/chrome/img/key.png
  25. 0  src/chrome/img/keygen.gif
  26. 0  src/chrome/img/logout.png
  27. 0  src/chrome/img/newMessage.png
  28. 0  src/chrome/img/noNotifications.png
  29. 0  src/chrome/img/noSound.png
  30. 0  src/chrome/img/notifications.png
  31. 0  src/chrome/img/sending.gif
  32. 0  src/chrome/img/sound.png
  33. 0  src/chrome/img/up.png
  34. 0  src/chrome/img/user.png
  35. 0  src/chrome/index.html
  36. 0  src/chrome/js/bigint.js
  37. 0  src/chrome/js/catfacts.js
  38. 0  src/chrome/js/crypto-js/aes.js
  39. 0  src/chrome/js/crypto-js/cipher-core.js
  40. 0  src/chrome/js/crypto-js/core.js
  41. 0  src/chrome/js/crypto-js/enc-base64.js
  42. 0  src/chrome/js/crypto-js/hmac.js
  43. 0  src/chrome/js/crypto-js/mode-ctr.js
  44. 0  src/chrome/js/crypto-js/pad-nopadding.js
  45. 0  src/chrome/js/crypto-js/sha1.js
  46. 0  src/chrome/js/crypto-js/sha256.js
  47. 0  src/chrome/js/crypto-js/sha512.js
  48. 0  src/chrome/js/crypto-js/x64-core.js
  49. +1,229 −1,200 src/chrome/js/cryptocat.js
  50. 0  src/chrome/js/datareader.js
  51. 0  src/chrome/js/elliptic.js
  52. 0  src/chrome/js/jquery/jquery.color.js
  53. 0  src/chrome/js/jquery/jquery.js
  54. 0  src/chrome/js/jquery/jquery.qtip.js
  55. 0  src/chrome/js/keygenerator.js
  56. 0  src/chrome/js/language.js
  57. 0  src/chrome/js/multiparty.js
  58. 0  src/chrome/js/notification.js
  59. 0  src/chrome/js/otr.js
  60. 0  src/chrome/js/seedrandom.js
  61. 0  src/chrome/js/strophe/strophe.js
  62. 0  src/chrome/js/strophe/strophe.muc.js
  63. 0  src/chrome/js/strophe/strophe.register.js
  64. 0  src/chrome/locale/ar.txt
  65. 0  src/chrome/locale/bo.txt
  66. 0  src/chrome/locale/ca.txt
  67. 0  src/chrome/locale/cs.txt
  68. 0  src/chrome/locale/da.txt
  69. 0  src/chrome/locale/de.txt
  70. 0  src/chrome/locale/el.txt
  71. 0  src/chrome/locale/en-us.txt
  72. 0  src/chrome/locale/es.txt
  73. 0  src/chrome/locale/eu.txt
  74. 0  src/chrome/locale/fa.txt
  75. 0  src/chrome/locale/fr.txt
  76. 0  src/chrome/locale/he.txt
  77. 0  src/chrome/locale/it.txt
  78. 0  src/chrome/locale/lol.txt
  79. 0  src/chrome/locale/nl.txt
  80. 0  src/chrome/locale/pl.txt
  81. 0  src/chrome/locale/pt.txt
  82. 0  src/chrome/locale/ru.txt
  83. 0  src/chrome/locale/sv.txt
  84. 0  src/chrome/locale/vi.txt
  85. 0  src/chrome/locale/zh-cn.txt
  86. 0  src/chrome/locale/zh-hk.txt
  87. 0  src/chrome/snd/msgGet.webm
  88. 0  src/chrome/snd/msgSend.webm
  89. 0  src/chrome/snd/userOffline.webm
  90. 0  src/chrome/snd/userOnline.webm
  91. 0  src/cryptocat.safariextension/Icon.png
  92. 0  src/cryptocat.safariextension/Info.plist
  93. 0  src/cryptocat.safariextension/Settings.plist
  94. +541 −541 src/cryptocat.safariextension/css/style.css
  95. 0  src/cryptocat.safariextension/img/add.png
  96. 0  src/cryptocat.safariextension/img/available.png
  97. 0  src/cryptocat.safariextension/img/away.png
  98. 0  src/cryptocat.safariextension/img/bg.png
  99. 0  src/cryptocat.safariextension/img/cryptocat.png
  100. 0  src/cryptocat.safariextension/img/down.png
  101. 0  src/cryptocat.safariextension/img/emoticat.png
  102. 0  src/cryptocat.safariextension/img/error.png
  103. 0  src/cryptocat.safariextension/img/favicon.gif
  104. 0  src/cryptocat.safariextension/img/file.png
  105. 0  src/cryptocat.safariextension/img/groupChat.png
  106. 0  src/cryptocat.safariextension/img/icon-128.png
  107. 0  src/cryptocat.safariextension/img/icon-16.png
  108. 0  src/cryptocat.safariextension/img/icon-48.png
  109. 0  src/cryptocat.safariextension/img/ios.png
  110. 0  src/cryptocat.safariextension/img/key.png
  111. 0  src/cryptocat.safariextension/img/keygen.gif
  112. 0  src/cryptocat.safariextension/img/logout.png
  113. 0  src/cryptocat.safariextension/img/newMessage.png
  114. 0  src/cryptocat.safariextension/img/noNotifications.png
  115. 0  src/cryptocat.safariextension/img/noSound.png
  116. 0  src/cryptocat.safariextension/img/notifications.png
  117. 0  src/cryptocat.safariextension/img/sending.gif
  118. 0  src/cryptocat.safariextension/img/sound.png
  119. 0  src/cryptocat.safariextension/img/up.png
  120. 0  src/cryptocat.safariextension/img/user.png
  121. 0  src/cryptocat.safariextension/js/catfacts.js
  122. +609 −609 src/cryptocat.safariextension/js/crypto-js/aes.js
  123. +869 −869 src/cryptocat.safariextension/js/crypto-js/cipher-core.js
  124. +719 −719 src/cryptocat.safariextension/js/crypto-js/core.js
  125. +112 −112 src/cryptocat.safariextension/js/crypto-js/enc-base64.js
  126. +128 −128 src/cryptocat.safariextension/js/crypto-js/hmac.js
  127. +44 −44 src/cryptocat.safariextension/js/crypto-js/mode-ctr.js
  128. +16 −16 src/cryptocat.safariextension/js/crypto-js/pad-nopadding.js
  129. +121 −121 src/cryptocat.safariextension/js/crypto-js/sha1.js
  130. +174 −174 src/cryptocat.safariextension/js/crypto-js/sha256.js
  131. +306 −306 src/cryptocat.safariextension/js/crypto-js/sha512.js
  132. +293 −293 src/cryptocat.safariextension/js/crypto-js/x64-core.js
  133. +1,229 −1,200 src/cryptocat.safariextension/js/cryptocat.js
  134. +20 −20 src/cryptocat.safariextension/js/datareader.js
  135. +413 −413 src/cryptocat.safariextension/js/elliptic.js
  136. +26 −26 src/cryptocat.safariextension/js/keygenerator.js
  137. 0  src/cryptocat.safariextension/js/language.js
  138. 0  src/cryptocat.safariextension/js/multiparty.js
  139. +166 −166 src/cryptocat.safariextension/js/notification.js
  140. +272 −272 src/cryptocat.safariextension/js/seedrandom.js
  141. +1,011 −1,011 src/cryptocat.safariextension/js/strophe/strophe.muc.js
  142. +426 −426 src/cryptocat.safariextension/js/strophe/strophe.register.js
  143. 0  src/cryptocat.safariextension/locale/ar.txt
  144. 0  src/cryptocat.safariextension/locale/bo.txt
  145. 0  src/cryptocat.safariextension/locale/ca.txt
  146. 0  src/cryptocat.safariextension/locale/cs.txt
  147. 0  src/cryptocat.safariextension/locale/da.txt
  148. 0  src/cryptocat.safariextension/locale/de.txt
  149. 0  src/cryptocat.safariextension/locale/el.txt
  150. 0  src/cryptocat.safariextension/locale/en-us.txt
  151. 0  src/cryptocat.safariextension/locale/es.txt
  152. 0  src/cryptocat.safariextension/locale/eu.txt
  153. 0  src/cryptocat.safariextension/locale/fa.txt
  154. 0  src/cryptocat.safariextension/locale/fr.txt
  155. 0  src/cryptocat.safariextension/locale/he.txt
  156. 0  src/cryptocat.safariextension/locale/it.txt
  157. 0  src/cryptocat.safariextension/locale/lol.txt
  158. 0  src/cryptocat.safariextension/locale/nl.txt
  159. 0  src/cryptocat.safariextension/locale/pl.txt
  160. 0  src/cryptocat.safariextension/locale/pt.txt
  161. 0  src/cryptocat.safariextension/locale/ru.txt
  162. 0  src/cryptocat.safariextension/locale/sv.txt
  163. 0  src/cryptocat.safariextension/locale/vi.txt
  164. 0  src/cryptocat.safariextension/locale/zh-cn.txt
  165. 0  src/cryptocat.safariextension/locale/zh-hk.txt
  166. 0  src/cryptocat.safariextension/snd/msgGet.webm
  167. 0  src/cryptocat.safariextension/snd/msgSend.webm
  168. 0  src/cryptocat.safariextension/snd/userOffline.webm
  169. 0  src/cryptocat.safariextension/snd/userOnline.webm
  170. 0  src/firefox/chrome.manifest
  171. 0  src/firefox/chrome/content/browser.xul
  172. 0  src/firefox/chrome/content/cryptocat.js
  173. +541 −541 src/firefox/chrome/content/data/css/style.css
  174. 0  src/firefox/chrome/content/data/img/add.png
  175. 0  src/firefox/chrome/content/data/img/available.png
  176. 0  src/firefox/chrome/content/data/img/away.png
  177. 0  src/firefox/chrome/content/data/img/bg.png
  178. 0  src/firefox/chrome/content/data/img/cryptocat.png
  179. 0  src/firefox/chrome/content/data/img/down.png
  180. 0  src/firefox/chrome/content/data/img/emoticat.png
  181. 0  src/firefox/chrome/content/data/img/error.png
  182. 0  src/firefox/chrome/content/data/img/favicon.gif
  183. 0  src/firefox/chrome/content/data/img/file.png
  184. 0  src/firefox/chrome/content/data/img/groupChat.png
  185. 0  src/firefox/chrome/content/data/img/icon-128.png
  186. 0  src/firefox/chrome/content/data/img/icon-16.png
  187. 0  src/firefox/chrome/content/data/img/icon-48.png
  188. 0  src/firefox/chrome/content/data/img/ios.png
  189. 0  src/firefox/chrome/content/data/img/key.png
  190. 0  src/firefox/chrome/content/data/img/keygen.gif
  191. 0  src/firefox/chrome/content/data/img/logout.png
  192. 0  src/firefox/chrome/content/data/img/newMessage.png
  193. 0  src/firefox/chrome/content/data/img/noNotifications.png
  194. 0  src/firefox/chrome/content/data/img/noSound.png
  195. 0  src/firefox/chrome/content/data/img/notifications.png
  196. 0  src/firefox/chrome/content/data/img/sending.gif
  197. 0  src/firefox/chrome/content/data/img/sound.png
  198. 0  src/firefox/chrome/content/data/img/up.png
  199. 0  src/firefox/chrome/content/data/img/user.png
  200. 0  src/firefox/chrome/content/data/index.html
  201. 0  src/firefox/chrome/content/data/js/bigint.js
  202. 0  src/firefox/chrome/content/data/js/catfacts.js
  203. 0  src/firefox/chrome/content/data/js/crypto-js/aes.js
  204. 0  src/firefox/chrome/content/data/js/crypto-js/cipher-core.js
  205. 0  src/firefox/chrome/content/data/js/crypto-js/core.js
  206. 0  src/firefox/chrome/content/data/js/crypto-js/enc-base64.js
  207. 0  src/firefox/chrome/content/data/js/crypto-js/hmac.js
  208. 0  src/firefox/chrome/content/data/js/crypto-js/mode-ctr.js
  209. 0  src/firefox/chrome/content/data/js/crypto-js/pad-nopadding.js
  210. 0  src/firefox/chrome/content/data/js/crypto-js/sha1.js
  211. 0  src/firefox/chrome/content/data/js/crypto-js/sha256.js
  212. 0  src/firefox/chrome/content/data/js/crypto-js/sha512.js
  213. 0  src/firefox/chrome/content/data/js/crypto-js/x64-core.js
  214. +1,229 −1,200 src/firefox/chrome/content/data/js/cryptocat.js
  215. 0  src/firefox/chrome/content/data/js/datareader.js
  216. 0  src/firefox/chrome/content/data/js/elliptic.js
  217. 0  src/firefox/chrome/content/data/js/jquery/jquery.color.js
  218. 0  src/firefox/chrome/content/data/js/jquery/jquery.js
  219. 0  src/firefox/chrome/content/data/js/jquery/jquery.qtip.js
  220. 0  src/firefox/chrome/content/data/js/keygenerator.js
  221. 0  src/firefox/chrome/content/data/js/language.js
  222. 0  src/firefox/chrome/content/data/js/multiparty.js
  223. 0  src/firefox/chrome/content/data/js/notification.js
  224. 0  src/firefox/chrome/content/data/js/otr.js
  225. 0  src/firefox/chrome/content/data/js/seedrandom.js
  226. 0  src/firefox/chrome/content/data/js/strophe/strophe.js
  227. 0  src/firefox/chrome/content/data/js/strophe/strophe.muc.js
  228. 0  src/firefox/chrome/content/data/js/strophe/strophe.register.js
  229. 0  src/firefox/chrome/content/data/locale/ar.txt
  230. 0  src/firefox/chrome/content/data/locale/bo.txt
  231. 0  src/firefox/chrome/content/data/locale/ca.txt
  232. 0  src/firefox/chrome/content/data/locale/cs.txt
  233. 0  src/firefox/chrome/content/data/locale/da.txt
  234. 0  src/firefox/chrome/content/data/locale/de.txt
  235. 0  src/firefox/chrome/content/data/locale/el.txt
  236. 0  src/firefox/chrome/content/data/locale/en-us.txt
  237. 0  src/firefox/chrome/content/data/locale/es.txt
  238. 0  src/firefox/chrome/content/data/locale/eu.txt
  239. 0  src/firefox/chrome/content/data/locale/fa.txt
  240. 0  src/firefox/chrome/content/data/locale/fr.txt
  241. 0  src/firefox/chrome/content/data/locale/he.txt
  242. 0  src/firefox/chrome/content/data/locale/it.txt
  243. 0  src/firefox/chrome/content/data/locale/lol.txt
  244. 0  src/firefox/chrome/content/data/locale/nl.txt
  245. 0  src/firefox/chrome/content/data/locale/pl.txt
  246. 0  src/firefox/chrome/content/data/locale/pt.txt
  247. 0  src/firefox/chrome/content/data/locale/ru.txt
  248. 0  src/firefox/chrome/content/data/locale/sv.txt
  249. 0  src/firefox/chrome/content/data/locale/vi.txt
  250. 0  src/firefox/chrome/content/data/locale/zh-cn.txt
  251. 0  src/firefox/chrome/content/data/locale/zh-hk.txt
  252. 0  src/firefox/chrome/content/data/snd/msgGet.webm
  253. 0  src/firefox/chrome/content/data/snd/msgSend.webm
  254. 0  src/firefox/chrome/content/data/snd/userOffline.webm
  255. 0  src/firefox/chrome/content/data/snd/userOnline.webm
  256. 0  src/firefox/chrome/content/generateRandomBytes.jsm
  257. 0  src/firefox/chrome/content/options.xul
  258. 0  src/firefox/defaults/preferences/prefs.js
  259. 0  src/firefox/install.rdf
  260. 0  src/firefox/locale/en-US/translations.dtd
  261. 0  src/firefox/skin/bar.png
  262. 0  src/firefox/skin/menu.png
  263. 0  src/firefox/skin/skin.css
View
0  LICENSE.txt 100644 → 100755
File mode changed
View
0  Makefile 100644 → 100755
File mode changed
View
0  README.md 100644 → 100755
File mode changed
View
0  RESOURCES.md 100644 → 100755
File mode changed
View
0  release/README 100644 → 100755
File mode changed
View
0  release/cryptocat-chrome.zip 100644 → 100755
File mode changed
View
0  release/cryptocat-firefox.xpi 100644 → 100755
File mode changed
View
1,082 src/chrome/css/style.css 100644 → 100755
@@ -1,541 +1,541 @@
-body {
- height: 100%;
- background-color: #c7e5f5;
- margin: 0;
- font-family: Helvetica, Arial, Verdana;
- font-size: 11px;
- color: #FFF;
- background-image: url("../img/bg.png");
- line-height: 1.37em;
-}
-a {
- color: #97CEEC;
- text-decoration: none;
-}
-a:hover {
- text-decoration: underline;
-}
-img.logo {
- display: inline;
- padding-left: 10px;
- float: left;
-}
-#bubble:before {
- content: ' ';
- position: absolute;
- width: 0;
- height: 0;
- left: 307px;
- top: 310px;
- border: 25px solid;
- border-color: #000 transparent transparent #000;
- z-index: 0;
-}
-#bubble {
- position: relative;
- z-index: 1;
- width: 680px;
- height: 310px;
- margin: 5% auto 0 auto;
- background-color: #000;
- border-radius: 12px 0 12px 12px;
- box-shadow: 4px 4px #76BDE5;
-}
-#bubble:after {
- content: ' ';
- position: absolute;
- width: 0;
- height: 0;
- left: 315px;
- top: 310px;
- border: 15px solid;
- border-color: #000 transparent transparent #000;
- z-index: 0;
-}
-#bubble #head {
- background-color: #222;
- width: 100%;
- padding: 5px 0;
- height: 35px;
- border-radius: 15px 0 0 0;
-}
-#bubble #loginLinks {
- float: right;
- word-spacing: 10px;
- margin: 10px 10px 0 0;
- font-weight: bold;
-}
-#bubble .button {
- display: none;
- cursor: pointer;
- float: right;
- margin: 9px 10px 0 0;
- box-shadow: 2px 2px #111;
-}
-#bubble #info {
- float: left;
- padding-left: 15px;
- width: 380px;
- font-size: 1.1em;
- line-height: 20px;
- margin-top: 5px;
-}
-#bubble #loginForm {
- float: right;
- padding-right: 15px;
- margin-top: 5px;
-}
-#bubble #loginForm input {
- text-align: center;
-}
-[type=text], [type=password], [type=button], [type=submit], textarea {
- display: block;
- background-color: #222;
- font-size: 1.4em;
- padding: 5px;
- color: #FFF;
- border: none;
- margin: 15px auto 0 auto;
- border: 1px solid #333;
- width: 200px;
- outline: none;
-}
-#bubble #loginSubmit {
- width: 211px;
-}
-[type=submit] {
- box-shadow: 2px 2px #97CEEC;
-}
-[type=submit]:hover {
- cursor: pointer;
- background-color: #97CEEC;
- border: 1px solid #97CEEC;
-}
-[type=submit]:active {
- border: 1px solid #97CEEC;
- box-shadow: 2px 2px #76BDE5;
-}
-#loginInfo {
- color: #999;
- background-color: #222;
- padding: 2px 5px;
- width: 204px;
- margin: 10px 0 0 1px;
- font-size: 1em;
-}
-#bubble h1 {
- font-family: Helvetica, Arial;
- font-size: 1.5em;
-}
-#bubble .loginOption {
- background-color: #97CEEC;
- color: #FFF;
- padding: 0 6px;
- width: 201px;
- display: block;
- margin-left: 2px;
- font-size: 0.9em;
- height: 15px;
-}
-#bubble .loginOption:hover {
- text-decoration: none;
-}
-#bubble .loginOption span {
- position: relative;
- bottom: 5px;
-}
-#bubble #options {
- background-color: #222;
- width: 110px;
- height: 20px;
- padding: 1px 0 2px 2px;
- position: absolute;
- border-radius: 5px 0 12px 0;
- right: 0;
- bottom: 0;
-}
-#bubble #languages {
- background-color: #222;
- color: #97CEEC;
- font-size: 0.9em;
- border: 1px solid #222;
- outline: none;
- width: 100px;
- float: right;
- margin-right: 9px;
-}
-#buddyWrapper {
- overflow: hidden;
- width: 150px;
- float: right;
- height: 495px;
- display: none;
-}
-#buddyList {
- height: 495px;
- width: 160px;
- overflow-y: scroll;
- overflow-x: hidden;
-}
-.buddy {
- background-color: #76BDE5;
- background-position: 85% 3px;
- background-repeat: no-repeat;
- color: #FFF;
- padding: 8px 7px 6px 7px;
- font-size: 1em;
- font-weight: bold;
- width: 133px;
- height: 15px;
- display: none;
- position: relative;
- border-left: 3px solid #97CEEC;
- z-index: 1;
- text-align: left;
- cursor: pointer;
-}
-.buddyMenu {
- position: relative;
- z-index: 2;
- float: right;
- margin: 0;
- font-size: 0.9em;
- background-image: url("../img/down.png");
- width: 14px;
- height: 14px;
- cursor: pointer;
- border-radius: 3px 0 3px 3px;
- opacity: 0.8;
-}
-.buddyMenu:hover {
- background-color: #222;
- box-shadow: 2px 2px #111;
-}
-.buddyMenuContents {
- display: none;
- margin-left: -7px;
- width: 147px;
-}
-.buddyMenuContents li {
- list-style-type: none;
- background-color: rgba(255, 255, 255, 0.15);
- padding: 1px 0 1px 10px;
- font-size: 0.9em;
- cursor: pointer;
-}
-.buddyMenuContents li:hover {
- background-color: rgba(255, 255, 255, 0.4);
-}
-.buddyMenu:active {
- background-color: #000;
-}
-#buddy-main-Conversation {
- background-image: url("../img/groupChat.png");
- background-position: 96% 7px;
-}
-#dialogBox {
- position: absolute;
- width: 470px;
- height: 240px;
- border-radius: 10px 0 10px 10px;
- margin: 120px auto 0 -235px;
- left: 50%;
- z-index: 4;
- font-size: 1.1em;
- border: 1px solid #222;
- border-right: none;
- background-color: rgba(0, 0, 0, 0.94);
- box-shadow: 2px 2px #E93028;
- top: -450px;
- color: #97CEEC;
- font-family: monospace;
-}
-#dialogBoxClose {
- height: 18px;
- width: 0;
- font-size: 0;
- text-align: center;
- color: #FFF;
- background-color: #E93028;
- float: right;
- cursor: pointer;
- margin-top: 1px;
- font-family: Helvetica, Arial, Verdana;
- font-weight: bold;
-}
-#dialogBoxContent {
- padding: 25px 0 0 0;
-}
-#displayInfo {
- font-size: 1.1em;
- padding: 10px 20px;
- height: 80px;
-}
-#dialogBoxContent p {
- padding: 10px;
- max-width: 340px;
- margin: 0 auto;
-}
-#dialogBox .bar, #dialogBox .button, #dialogBox .no {
- width: 458px;
- background-color: #333;
- padding: 5px 6px;
- font-size: 1em;
- box-shadow: none;
- font-weight: bold;
- font-family: Helvetica, Arial;
- margin: 0;
- border: none;
- display: block;
- box-sizing: content-box;
- outline: none;
- color: #FFF;
- text-align: left;
-}
-#dialogBox .button, #dialogBox .no {
- cursor: pointer;
- margin-top: 5px;
-}
-#dialogBox .button {
- background-color: #97CEEC;
-}
-#dialogBox .no {
- background-color: #E93028;
-}
-#conversationWrapper {
- width: 750px;
- overflow: hidden;
- float: left;
-}
-#conversationWindow {
- z-index: 3;
- height: 412px;
- display: none;
- position: relative;
- font-size: 1.2em;
- overflow-x: hidden;
- overflow-y: scroll;
-}
-#conversationInfo, .Line1, .Line2, .Line3 {
- background-color: rgba(151, 206, 236, 0.12);
- padding: 5px 10px 5px 5px;
- width: 735px;
- line-height: 20px;
- word-wrap: break-word;
- text-align: left;
-}
-#conversationInfo {
- background-color: #97CEEC;
- text-align: left;
- font-size: 1em;
- padding: 5px 0 11px 0;
- width: 0;
- float: right;
- height: 13px;
- font-family: 'Helvetica', 'Arial', 'Verdana';
- border-bottom: 1px solid #76BDE5;
- font-weight: bold;
-}
-#conversationInfo span {
- margin: 0 10px 0 10px;
-}
-#conversationInfo .conversationName {
- font-size: 1em;
-}
-#conversationWindow .Line2 {
- background-color: #000;
-}
-#conversationWindow .Line3 {
- background-color: rgba(151, 206, 236, 0.2);
-}
-#conversationWindow .timeStamp {
- color: #CCC;
- font-size: 0.8em;
- font-family: monospace;
- text-shadow: 1px 1px #555;
-}
-#conversationWindow .sender {
- color: #97CEEC;
- padding: 6px 3px 6px 0;
- width: 100px;
- margin: 0 10px;
- display: inline;
- text-align: right;
- font-weight: bold;
-}
-#conversationWindow .nickHighlight {
- font-weight: bold;
- color: #97CEEC;
-}
-#userInput {
- display: none;
-}
-#userInputText {
- background-color: #000;
- width: 730px;
- height: 28px;
- float: left;
- margin: 10px 0;
- display: inline;
- padding: 10px 4px;
- border: none;
- border-left: 6px solid #97CEEC;
- box-shadow: none;
- font-family: Helvetica, Arial, Verdana;
- font-size: 1.2em;
- text-align: left;
- resize: none;
- overflow: hidden;
-}
-#progressForm {
- font-size: 0.9em;
-}
-#progressInfo span {
- font-size: 1.2em;
- font-weight: bold;
-}
-#progressForm img {
- float: left;
- margin: 8px 20px 0 0;
- box-shadow: 2px 2px #97CEEC;
-}
-#progressInfo {
- border-left: 1px solid #97CEEC;
- width: 320px;
- font-size: 1em;
- position: relative;
- bottom: 70px;
- float: right;
-}
-#progressInfo #interestingFact {
- font-size: 1em;
-}
-#progressBar {
- margin-top: 10px;
- height: 17px;
- width: 308px;
-}
-#progressBar #fill {
- height: 100%;
- width: 0%;
- color: #000;
- background-color: #97CEEC;
- opacity: 0.8;
-}
-#dialogBox [type=text], #dialogBox [type=password], #dialogBox [type=submit] {
- background-color: #000;
- border: 1px solid #97CEEC;
- color: #97CEEC;
- float: left;
- margin: 0 5px 10px 5px;
- width: 255px;
- box-shadow: 2px 2px #97CEEC;
- font-size: 1em;
-}
-#dialogBox #resetKeysOK {
- background-color: #000;
- border: 1px solid #97CEEC;
- color: #97CEEC;
- margin: 0 auto;
- width: 100px;
- box-shadow: 2px 2px #97CEEC;
- font-size: 1.2em;
- cursor: pointer;
-}
-#dialogBox [type=checkbox] {
- width: 10px;
- height: 10px;
-}
-#otrFingerprint, #multiPartyFingerprint {
- font-weight: bold;
-}
-#otrColorprint, #multiPartyColorprint {
- height: 20px;
- margin-top: 2px;
-}
-.colorprint {
- width: 71px;
- height: 12px;
- display: inline-block;
-}
-#fileSelector {
- display: none;
-}
-#fileErrorField {
- color: #F00;
- margin: 20px 0;
- font-weight: bold;
-}
-.imageView, .fileView {
- background-color: #97CEEC;
- color: #FFF;
- padding: 2px 2px 2px 21px;
- box-shadow: 1px 1px #34BEED;
- background-image: url("../img/file.png");
- background-position: center left;
- background-repeat: no-repeat;
- font-family: monospace;
-}
-.imageView:hover, .fileView:hover {
- text-decoration: none;
-}
-
-.emoticon {
- background: transparent url("../img/emoticat.png") no-repeat;
- height: 13px;
- width: 13px;
- display: inline-block;
- vertical-align: 4%;
- margin: 0 3px;
- font-size: 2px;
- color: transparent;
-}
-#eCat { background-position: 0 0; }
-#eCry { background-position: -13px 0; }
-#eGasp { background-position: -26px 0; }
-#eGrin { background-position: -39px 0; }
-#eSad { background-position: -52px 0; }
-#eSmile { background-position: -65px 0; }
-#eSquint { background-position: -78px 0; }
-#eTongue { background-position: -91px 0; }
-#eUnsure { background-position: -104px 0; }
-#eWink { background-position: -117px 0; }
-#eWinkTongue { background-position: -130px 0; }
-#eYay { background-position: -143px 0; }
-#eShut { background-position: -156px 0; }
-
-.ui-tooltip, .qtip{
- position: absolute;
- left: -28000px;
- top: -28000px;
- display: none;
- max-width: 280px;
- min-width: 50px;
- font-size: 1em;
- line-height: 12px;
- border: 2px solid #97CEEC;
- box-shadow: 1px 1px 3px #5588A5;
- background-color: rgba(0, 0, 0, 0.75);
- color: #EEE;
- padding: 6px;
- border-radius: 4px 0 4px 4px;
- text-align: center;
-}
-.ui-tooltip .ui-tooltip-tip{
- margin: 0 auto;
- overflow: hidden;
- z-index: 10;
-}
-.ui-tooltip .ui-tooltip-tip,
-.ui-tooltip .ui-tooltip-tip *{
- position: absolute;
- line-height: 0.1px !important;
- font-size: 0.1px !important;
- background: transparent;
- border: 0 dashed transparent;
- box-shadow: none;
-}
-.ui-tooltip .ui-tooltip-tip canvas {
- top: 0;
- left: 0;
-}
+body {
+ height: 100%;
+ background-color: #c7e5f5;
+ margin: 0;
+ font-family: Helvetica, Arial, Verdana;
+ font-size: 11px;
+ color: #FFF;
+ background-image: url("../img/bg.png");
+ line-height: 1.37em;
+}
+a {
+ color: #97CEEC;
+ text-decoration: none;
+}
+a:hover {
+ text-decoration: underline;
+}
+img.logo {
+ display: inline;
+ padding-left: 10px;
+ float: left;
+}
+#bubble:before {
+ content: ' ';
+ position: absolute;
+ width: 0;
+ height: 0;
+ left: 307px;
+ top: 310px;
+ border: 25px solid;
+ border-color: #000 transparent transparent #000;
+ z-index: 0;
+}
+#bubble {
+ position: relative;
+ z-index: 1;
+ width: 680px;
+ height: 310px;
+ margin: 5% auto 0 auto;
+ background-color: #000;
+ border-radius: 12px 0 12px 12px;
+ box-shadow: 4px 4px #76BDE5;
+}
+#bubble:after {
+ content: ' ';
+ position: absolute;
+ width: 0;
+ height: 0;
+ left: 315px;
+ top: 310px;
+ border: 15px solid;
+ border-color: #000 transparent transparent #000;
+ z-index: 0;
+}
+#bubble #head {
+ background-color: #222;
+ width: 100%;
+ padding: 5px 0;
+ height: 35px;
+ border-radius: 15px 0 0 0;
+}
+#bubble #loginLinks {
+ float: right;
+ word-spacing: 10px;
+ margin: 10px 10px 0 0;
+ font-weight: bold;
+}
+#bubble .button {
+ display: none;
+ cursor: pointer;
+ float: right;
+ margin: 9px 10px 0 0;
+ box-shadow: 2px 2px #111;
+}
+#bubble #info {
+ float: left;
+ padding-left: 15px;
+ width: 380px;
+ font-size: 1.1em;
+ line-height: 20px;
+ margin-top: 5px;
+}
+#bubble #loginForm {
+ float: right;
+ padding-right: 15px;
+ margin-top: 5px;
+}
+#bubble #loginForm input {
+ text-align: center;
+}
+[type=text], [type=password], [type=button], [type=submit], textarea {
+ display: block;
+ background-color: #222;
+ font-size: 1.4em;
+ padding: 5px;
+ color: #FFF;
+ border: none;
+ margin: 15px auto 0 auto;
+ border: 1px solid #333;
+ width: 200px;
+ outline: none;
+}
+#bubble #loginSubmit {
+ width: 211px;
+}
+[type=submit] {
+ box-shadow: 2px 2px #97CEEC;
+}
+[type=submit]:hover {
+ cursor: pointer;
+ background-color: #97CEEC;
+ border: 1px solid #97CEEC;
+}
+[type=submit]:active {
+ border: 1px solid #97CEEC;
+ box-shadow: 2px 2px #76BDE5;
+}
+#loginInfo {
+ color: #999;
+ background-color: #222;
+ padding: 2px 5px;
+ width: 204px;
+ margin: 10px 0 0 1px;
+ font-size: 1em;
+}
+#bubble h1 {
+ font-family: Helvetica, Arial;
+ font-size: 1.5em;
+}
+#bubble .loginOption {
+ background-color: #97CEEC;
+ color: #FFF;
+ padding: 0 6px;
+ width: 201px;
+ display: block;
+ margin-left: 2px;
+ font-size: 0.9em;
+ height: 15px;
+}
+#bubble .loginOption:hover {
+ text-decoration: none;
+}
+#bubble .loginOption span {
+ position: relative;
+ bottom: 5px;
+}
+#bubble #options {
+ background-color: #222;
+ width: 110px;
+ height: 20px;
+ padding: 1px 0 2px 2px;
+ position: absolute;
+ border-radius: 5px 0 12px 0;
+ right: 0;
+ bottom: 0;
+}
+#bubble #languages {
+ background-color: #222;
+ color: #97CEEC;
+ font-size: 0.9em;
+ border: 1px solid #222;
+ outline: none;
+ width: 100px;
+ float: right;
+ margin-right: 9px;
+}
+#buddyWrapper {
+ overflow: hidden;
+ width: 150px;
+ float: right;
+ height: 495px;
+ display: none;
+}
+#buddyList {
+ height: 495px;
+ width: 160px;
+ overflow-y: scroll;
+ overflow-x: hidden;
+}
+.buddy {
+ background-color: #76BDE5;
+ background-position: 85% 7px;
+ background-repeat: no-repeat;
+ color: #FFF;
+ padding: 8px 7px 6px 7px;
+ font-size: 1em;
+ font-weight: bold;
+ width: 133px;
+ height: 15px;
+ display: none;
+ position: relative;
+ border-left: 3px solid #97CEEC;
+ z-index: 1;
+ text-align: left;
+ cursor: pointer;
+}
+.buddyMenu {
+ position: relative;
+ z-index: 2;
+ float: right;
+ margin: 0;
+ font-size: 0.9em;
+ background-image: url("../img/down.png");
+ width: 14px;
+ height: 14px;
+ cursor: pointer;
+ border-radius: 3px 0 3px 3px;
+ opacity: 0.8;
+}
+.buddyMenu:hover {
+ background-color: #222;
+ box-shadow: 2px 2px #111;
+}
+.buddyMenuContents {
+ display: none;
+ margin-left: -7px;
+ width: 147px;
+}
+.buddyMenuContents li {
+ list-style-type: none;
+ background-color: rgba(255, 255, 255, 0.15);
+ padding: 1px 0 1px 10px;
+ font-size: 0.9em;
+ cursor: pointer;
+}
+.buddyMenuContents li:hover {
+ background-color: rgba(255, 255, 255, 0.4);
+}
+.buddyMenu:active {
+ background-color: #000;
+}
+#buddy-main-Conversation {
+ background-image: url("../img/groupChat.png");
+ background-position: 96% 7px;
+}
+#dialogBox {
+ position: absolute;
+ width: 470px;
+ height: 240px;
+ border-radius: 10px 0 10px 10px;
+ margin: 120px auto 0 -235px;
+ left: 50%;
+ z-index: 4;
+ font-size: 1.1em;
+ border: 1px solid #222;
+ border-right: none;
+ background-color: rgba(0, 0, 0, 0.94);
+ box-shadow: 2px 2px #E93028;
+ top: -450px;
+ color: #97CEEC;
+ font-family: monospace;
+}
+#dialogBoxClose {
+ height: 18px;
+ width: 0;
+ font-size: 0;
+ text-align: center;
+ color: #FFF;
+ background-color: #E93028;
+ float: right;
+ cursor: pointer;
+ margin-top: 1px;
+ font-family: Helvetica, Arial, Verdana;
+ font-weight: bold;
+}
+#dialogBoxContent {
+ padding: 25px 0 0 0;
+}
+#displayInfo {
+ font-size: 1.1em;
+ padding: 10px 20px;
+ height: 80px;
+}
+#dialogBoxContent p {
+ padding: 10px;
+ max-width: 340px;
+ margin: 0 auto;
+}
+#dialogBox .bar, #dialogBox .button, #dialogBox .no {
+ width: 458px;
+ background-color: #333;
+ padding: 5px 6px;
+ font-size: 1em;
+ box-shadow: none;
+ font-weight: bold;
+ font-family: Helvetica, Arial;
+ margin: 0;
+ border: none;
+ display: block;
+ box-sizing: content-box;
+ outline: none;
+ color: #FFF;
+ text-align: left;
+}
+#dialogBox .button, #dialogBox .no {
+ cursor: pointer;
+ margin-top: 5px;
+}
+#dialogBox .button {
+ background-color: #97CEEC;
+}
+#dialogBox .no {
+ background-color: #E93028;
+}
+#conversationWrapper {
+ width: 750px;
+ overflow: hidden;
+ float: left;
+}
+#conversationWindow {
+ z-index: 3;
+ height: 412px;
+ display: none;
+ position: relative;
+ font-size: 1.2em;
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+#conversationInfo, .Line1, .Line2, .Line3 {
+ background-color: rgba(151, 206, 236, 0.12);
+ padding: 5px 10px 5px 5px;
+ width: 735px;
+ line-height: 20px;
+ word-wrap: break-word;
+ text-align: left;
+}
+#conversationInfo {
+ background-color: #97CEEC;
+ text-align: left;
+ font-size: 1em;
+ padding: 5px 0 11px 0;
+ width: 0;
+ float: right;
+ height: 13px;
+ font-family: 'Helvetica', 'Arial', 'Verdana';
+ border-bottom: 1px solid #76BDE5;
+ font-weight: bold;
+}
+#conversationInfo span {
+ margin: 0 10px 0 10px;
+}
+#conversationInfo .conversationName {
+ font-size: 1em;
+}
+#conversationWindow .Line2 {
+ background-color: #000;
+}
+#conversationWindow .Line3 {
+ background-color: rgba(151, 206, 236, 0.2);
+}
+#conversationWindow .timeStamp {
+ color: #CCC;
+ font-size: 0.8em;
+ font-family: monospace;
+ text-shadow: 1px 1px #555;
+}
+#conversationWindow .sender {
+ color: #97CEEC;
+ padding: 6px 3px 6px 0;
+ width: 100px;
+ margin: 0 10px;
+ display: inline;
+ text-align: right;
+ font-weight: bold;
+}
+#conversationWindow .nickHighlight {
+ font-weight: bold;
+ color: #97CEEC;
+}
+#userInput {
+ display: none;
+}
+#userInputText {
+ background-color: #000;
+ width: 730px;
+ height: 28px;
+ float: left;
+ margin: 10px 0;
+ display: inline;
+ padding: 10px 4px;
+ border: none;
+ border-left: 6px solid #97CEEC;
+ box-shadow: none;
+ font-family: Helvetica, Arial, Verdana;
+ font-size: 1.2em;
+ text-align: left;
+ resize: none;
+ overflow: hidden;
+}
+#progressForm {
+ font-size: 0.9em;
+}
+#progressInfo span {
+ font-size: 1.2em;
+ font-weight: bold;
+}
+#progressForm img {
+ float: left;
+ margin: 8px 20px 0 0;
+ box-shadow: 2px 2px #97CEEC;
+}
+#progressInfo {
+ border-left: 1px solid #97CEEC;
+ width: 320px;
+ font-size: 1em;
+ position: relative;
+ bottom: 70px;
+ float: right;
+}
+#progressInfo #interestingFact {
+ font-size: 1em;
+}
+#progressBar {
+ margin-top: 10px;
+ height: 17px;
+ width: 308px;
+}
+#progressBar #fill {
+ height: 100%;
+ width: 0%;
+ color: #000;
+ background-color: #97CEEC;
+ opacity: 0.8;
+}
+#dialogBox [type=text], #dialogBox [type=password], #dialogBox [type=submit] {
+ background-color: #000;
+ border: 1px solid #97CEEC;
+ color: #97CEEC;
+ float: left;
+ margin: 0 5px 10px 5px;
+ width: 255px;
+ box-shadow: 2px 2px #97CEEC;
+ font-size: 1em;
+}
+#dialogBox #resetKeysOK {
+ background-color: #000;
+ border: 1px solid #97CEEC;
+ color: #97CEEC;
+ margin: 0 auto;
+ width: 100px;
+ box-shadow: 2px 2px #97CEEC;
+ font-size: 1.2em;
+ cursor: pointer;
+}
+#dialogBox [type=checkbox] {
+ width: 10px;
+ height: 10px;
+}
+#otrFingerprint, #multiPartyFingerprint {
+ font-weight: bold;
+}
+#otrColorprint, #multiPartyColorprint {
+ height: 20px;
+ margin-top: 2px;
+}
+.colorprint {
+ width: 71px;
+ height: 12px;
+ display: inline-block;
+}
+#fileSelector {
+ display: none;
+}
+#fileErrorField {
+ color: #F00;
+ margin: 20px 0;
+ font-weight: bold;
+}
+.imageView, .fileView {
+ background-color: #97CEEC;
+ color: #FFF;
+ padding: 2px 2px 2px 21px;
+ box-shadow: 1px 1px #34BEED;
+ background-image: url("../img/file.png");
+ background-position: center left;
+ background-repeat: no-repeat;
+ font-family: monospace;
+}
+.imageView:hover, .fileView:hover {
+ text-decoration: none;
+}
+
+.emoticon {
+ background: transparent url("../img/emoticat.png") no-repeat;
+ height: 13px;
+ width: 13px;
+ display: inline-block;
+ vertical-align: 4%;
+ margin: 0 3px;
+ font-size: 2px;
+ color: transparent;
+}
+#eCat { background-position: 0 0; }
+#eCry { background-position: -13px 0; }
+#eGasp { background-position: -26px 0; }
+#eGrin { background-position: -39px 0; }
+#eSad { background-position: -52px 0; }
+#eSmile { background-position: -65px 0; }
+#eSquint { background-position: -78px 0; }
+#eTongue { background-position: -91px 0; }
+#eUnsure { background-position: -104px 0; }
+#eWink { background-position: -117px 0; }
+#eWinkTongue { background-position: -130px 0; }
+#eYay { background-position: -143px 0; }
+#eShut { background-position: -156px 0; }
+
+.ui-tooltip, .qtip{
+ position: absolute;
+ left: -28000px;
+ top: -28000px;
+ display: none;
+ max-width: 280px;
+ min-width: 50px;
+ font-size: 1em;
+ line-height: 12px;
+ border: 2px solid #97CEEC;
+ box-shadow: 1px 1px 3px #5588A5;
+ background-color: rgba(0, 0, 0, 0.75);
+ color: #EEE;
+ padding: 6px;
+ border-radius: 4px 0 4px 4px;
+ text-align: center;
+}
+.ui-tooltip .ui-tooltip-tip{
+ margin: 0 auto;
+ overflow: hidden;
+ z-index: 10;
+}
+.ui-tooltip .ui-tooltip-tip,
+.ui-tooltip .ui-tooltip-tip *{
+ position: absolute;
+ line-height: 0.1px !important;
+ font-size: 0.1px !important;
+ background: transparent;
+ border: 0 dashed transparent;
+ box-shadow: none;
+}
+.ui-tooltip .ui-tooltip-tip canvas {
+ top: 0;
+ left: 0;
+}
View
0  src/chrome/img/add.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/available.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/away.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/bg.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/cryptocat.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/down.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/emoticat.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/error.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/favicon.gif 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/file.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/groupChat.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/icon-128.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/icon-16.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/icon-48.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/ios.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/key.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/keygen.gif 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/logout.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/newMessage.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/noNotifications.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/noSound.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/notifications.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/sending.gif 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/sound.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/up.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  src/chrome/img/user.png 100644 → 100755
Diff not rendered
View
0  src/chrome/index.html 100644 → 100755
File mode changed
View
0  src/chrome/js/bigint.js 100644 → 100755
File mode changed
View
0  src/chrome/js/catfacts.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/aes.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/cipher-core.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/core.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/enc-base64.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/hmac.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/mode-ctr.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/pad-nopadding.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/sha1.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/sha256.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/sha512.js 100644 → 100755
File mode changed
View
0  src/chrome/js/crypto-js/x64-core.js 100644 → 100755
File mode changed
View
2,429 src/chrome/js/cryptocat.js 100644 → 100755
@@ -1,1200 +1,1229 @@
-var Cryptocat = function() {};
-(function(){
-
-/* Configuration */
-var defaultDomain = 'crypto.cat'; // Domain name to connect to for XMPP.
-var defaultConferenceServer = 'conference.crypto.cat'; // Address of the XMPP MUC server.
-var defaultBOSH = 'https://crypto.cat/http-bind'; // BOSH is served over an HTTPS proxy for better security and availability.
-var fileSize = 700; // Maximum encrypted file sharing size, in kilobytes. Also needs to be defined in datareader.js
-var localStorageOn = 0; // Disabling localStorage features until Firefox bug #795615 is fixed
-var groupChat = 1; // Enable/disable group chat client functionality.
-
-/* Initialization */
-var domain = defaultDomain;
-var conferenceServer = defaultConferenceServer;
-var bosh = defaultBOSH;
-var otrKeys = {};
-var conversations = [];
-var conversationInfo = [];
-var loginCredentials = [];
-var currentConversation = 0;
-var audioNotifications = 0;
-var desktopNotifications = 0;
-var loginError = 0;
-var windowFocus = 1;
-var currentStatus = 'online';
-var soundEmbed = null;
-var conn, conversationName, myNickname, myKey;
-if (!groupChat) { $('#buddy-main-Conversation').remove(); }
-
-// Initialize language settings
-var language = window.navigator.language.toLowerCase();
-Language.set(language);
-
-// Check if localStorage is implemented
-try {
- localStorage.getItem('test');
-}
-catch(err) {
- localStorageOn = 0;
-}
-
-// If localStorage is implemented, load saved settings
-if (localStorageOn) {
- // Load language settings
- if (localStorage.getItem('language') !== null) {
- Language.set(localStorage.getItem('language'));
- $('#languages').val(localStorage.getItem('language'));
- }
- // Load nickname settings
- if (localStorage.getItem('rememberNickname') === 'rememberNickname') {
- $('#nickname').val(localStorage.getItem('myNickname'));
- }
- else {
- localStorage.getItem('rememberNickname', 'doNotRememberNickname');
- localStorage.getItem('myNickname');
- }
- // Load custom server settings
- if (localStorage.getItem('domain')) {
- domain = localStorage.getItem('domain');
- }
- if (localStorage.getItem('conferenceServer')) {
- conferenceServer = localStorage.getItem('conferenceServer');
- }
- if (localStorage.getItem('bosh')) {
- bosh = localStorage.getItem('bosh');
- }
- // Load pre-existing encryption keys
- if (localStorage.getItem('myKey') !== null) {
- myKey = JSON.parse(localStorage.getItem('myKey'));
- DSA.inherit(myKey);
- multiParty.setPrivateKey(localStorage.getItem('multiPartyKey'));
- multiParty.genPublicKey();
- }
-}
-
-// Handle window focus/blur
-$(window).blur(function() {
- windowFocus = 0;
-});
-$(window).focus(function() {
- windowFocus = 1;
- document.title = 'Cryptocat';
-});
-
-// Initialize workers
-var keyGenerator = new Worker('js/keygenerator.js');
-var dataReader = new Worker('js/datareader.js');
-keyGenerator.onmessage = function(e) {
- myKey = e.data;
- if (localStorageOn) {
- localStorage.setItem('myKey', JSON.stringify(myKey));
- }
- DSA.inherit(myKey);
- $('#fill').stop().animate({'width': '100%', 'opacity': '1'}, 400, 'linear', function() {
- $('#loginInfo').text(Cryptocat.language['loginMessage']['connecting']);
- $('#dialogBoxClose').click();
- });
-}
-
-// Outputs the current hh:mm.
-// If `seconds = 1`, outputs hh:mm:ss.
-function currentTime(seconds) {
- var date = new Date();
- var time = [];
- time.push(date.getHours().toString());
- time.push(date.getMinutes().toString());
- if (seconds) {
- time.push(date.getSeconds().toString());
- }
- for (var just in time) {
- if (time[just].length === 1) {
- time[just] = '0' + time[just];
- }
- }
- return time.join(':');
-}
-
-// Plays the audio file defined by the `audio` variable.
-function playSound(audio) {
- function createSound(audio) {
- soundEmbed = document.createElement('audio');
- soundEmbed.setAttribute('type', 'audio/webm');
- soundEmbed.setAttribute('src', audio);
- soundEmbed.setAttribute('style', 'display: none;');
- soundEmbed.setAttribute('autoplay', true);
- }
- if (!soundEmbed) {
- createSound(audio);
- }
- else {
- document.body.removeChild(soundEmbed);
- soundEmbed.removed = true;
- soundEmbed = null;
- createSound(audio);
- }
- soundEmbed.removed = false;
- document.body.appendChild(soundEmbed);
-}
-
-// Scrolls down the chat window to the bottom in a smooth animation.
-// 'speed' is animation speed in milliseconds.
-function scrollDown(speed) {
- $('#conversationWindow').animate({
- scrollTop: $('#conversationWindow')[0].scrollHeight + 20
- }, speed);
-}
-
-// Initiates a conversation. Internal use.
-function initiateConversation(conversation) {
- if (!conversations[conversation]) {
- conversations[conversation] = '';
- }
-}
-
-// OTR functions
-// Handle incoming messages
-var uicb = function(buddy) {
- return function(message) {
- addToConversation(message, buddy, buddy);
- }
-}
-// Handle outgoing messages
-var iocb = function(buddy) {
- return function(message) {
- conn.muc.message(conversationName + '@' + conferenceServer, buddy, message, null);
- }
-}
-
-// Creates a template for the conversation info bar at the top of each conversation.
-function buildConversationInfo(conversation) {
- $('#conversationInfo').html(
- '<span class="conversationName">' + myNickname + '@' + conversationName + '</span>'
- );
- if (conversation === 'main-Conversation') {
- $('#conversationInfo').append(
- '<span style="float:right">' + Cryptocat.language['chatWindow']['groupConversation'] + '</span>'
- );
- }
- conversationInfo[currentConversation] = $('#conversationInfo').html();
-}
-
-// Switches the currently active conversation to `buddy`
-function switchConversation(buddy) {
- if ($('#buddy-' + buddy).attr('status') !== 'offline') {
- $('#' + buddy).animate({'background-color': '#97CEEC'});
- $('#buddy-' + buddy).css('border-bottom', '1px solid #76BDE5');
- }
- if (buddy !== 'main-Conversation') {
- $('#buddy-' + buddy).css('background-image', 'none');
- }
- $('#conversationInfo').animate({'width': '750px'}, function() {
- $('#conversationWindow').slideDown('fast', function() {
- if (conversationInfo[currentConversation]) {
- $('#conversationInfo').html(conversationInfo[currentConversation]);
- }
- else {
- buildConversationInfo(currentConversation);
- }
- $('#userInput').fadeIn('fast', function() {
- $('#userInputText').focus();
- });
- var scrollWidth = document.getElementById('conversationWindow').scrollWidth;
- $('#conversationWindow').css('width', (712 + scrollWidth) + 'px');
- scrollDown(600);
- });
- });
- // Clean up finished conversations
- $('#buddyList div').each(function() {
- if (($(this).attr('id') !== ('buddy-' + currentConversation))
- && ($(this).css('background-image') === 'none')
- && ($(this).attr('status') === 'offline')) {
- $(this).slideUp(500, function() {
- $(this).remove();
- });
- }
- });
-}
-
-// Handles login failures
-function loginFail(message) {
- $('#loginInfo').text(message);
- $('#bubble').animate({'left': '+=5px'}, 130)
- .animate({'left': '-=10px'}, 130)
- .animate({'left': '+=5px'}, 130);
- $('#loginInfo').animate({'color': '#E93028'}, 'fast');
-}
-
-// Seeds the RNG via Math.seedrandom() using browser-native cryptographically secure seeding.
-function seedRNG() {
- if ((window.crypto !== undefined) && (typeof window.crypto.getRandomValues === 'function')) {
- var buffer = new Uint8Array(1024);
- window.crypto.getRandomValues(buffer);
- var seed = '';
- for (var i in buffer) {
- seed += String.fromCharCode(buffer[i]);
- }
- Math.seedrandom(seed);
- delete seed;
- return true;
- }
- else if (navigator.userAgent.match('Firefox')) {
- var element = document.createElement('cryptocatFirefoxElement');
- document.documentElement.appendChild(element);
- var evt = document.createEvent('HTMLEvents');
- evt.initEvent('cryptocatGenerateRandomBytes', true, false);
- element.dispatchEvent(evt);
- if (element.getAttribute('randomValues').length > 512) {
- Math.seedrandom(element.getAttribute('randomValues'));
- delete element;
- return true;
- }
- }
- return false;
-}
-
-// Generates a random string of length `size` characters.
-// If `alpha = 1`, random string will contain alpha characters, and so on.
-Cryptocat.randomString = function(size, alpha, uppercase, numeric) {
- var keyspace = '';
- var result = '';
- if (alpha) {
- keyspace += 'abcdefghijklmnopqrstuvwxyz';
- }
- if (uppercase) {
- keyspace += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- }
- if (numeric) {
- keyspace += '0123456789';
- }
- for (var i = 0; i !== size; i++) {
- result += keyspace[Math.floor(Math.random()*keyspace.length)];
- }
- return result;
-}
-
-// Simply shortens a string `string` to length `length.
-// Adds '..' to delineate that string was shortened.
-function shortenString(string, length) {
- if (string.length > length) {
- return string.substring(0, (length - 2)) + '..';
- }
- return string;
-}
-
-// Builds a buddy element to be added to the buddy list.
-function buildBuddy(nickname) {
- nickname = Strophe.xmlescape(nickname);
- var buddyTemplate = '<div class="buddy" title="' + nickname + '" id="buddy-'
- + nickname + '" status="online"><span>' + nickname + '</span>'
- + '<div class="buddyMenu" id="menu-' + nickname + '"></div></div>'
- $(buddyTemplate).insertAfter('#buddiesOnline').slideDown(300, function() {
- $('#menu-' + nickname).unbind('click');
- bindBuddyMenu(nickname);
- $('#buddy-' + nickname).unbind('click');
- if (nickname !== myNickname) {
- bindBuddyClick(nickname);
- conn.muc.message(conversationName + '@' + conferenceServer, null, multiParty.sendPublicKeyRequest(nickname), null);
- }
- else {
- $('#buddy-' + nickname).click(function() {
- $('#menu-' + nickname).click();
- });
- }
- });
-}
-
-// Get a fingerprint, formatted for readability
-function getFingerprint(buddy, OTR) {
- if (OTR) {
- if (buddy === myNickname) {
- var fingerprint = myKey.fingerprint();
- }
- else {
- var fingerprint = otrKeys[buddy].their_priv_pk.fingerprint();
- }
- }
- else {
- if (buddy === myNickname) {
- var fingerprint = multiParty.genFingerprint();
- }
- else {
- var fingerprint = multiParty.genFingerprint(buddy);
- }
- }
- var formatted = '';
- for (var i in fingerprint) {
- if ((i !== 0) && !(i % 8)) {
- formatted += ' ';
- }
- formatted += fingerprint[i];
- }
- return formatted.toUpperCase();
-}
-
-// Convert message URLs to links. Used internally.
-function addLinks(message) {
- if ((URLs = message.match(/((mailto\:|(news|(ht|f)tp(s?))\:\/\/){1}\S+)/gi))) {
- for (var i in URLs) {
- var sanitize = URLs[i].split('');
- for (var l in sanitize) {
- if (!sanitize[l].match(/\w|\d|\:|\/|\?|\=|\#|\+|\,|\.|\&|\;|\%/)) {
- sanitize[l] = encodeURIComponent(sanitize[l]);
- }
- }
- sanitize = sanitize.join('');
- message = message.replace(
- sanitize, '<a target="_blank" href="' + sanitize + '">' + URLs[i] + '</a>'
- );
- }
- }
- return message;
-}
-
-// Convert text emoticons to graphical emoticons.
-function addEmoticons(message) {
- return message
- .replace(/(\s|^)(:|(=))-?3(?=(\s|$))/gi, ' <div class="emoticon" id="eCat">$&</div> ')
- .replace(/(\s|^)(:|(=))-?\&apos;\((?=(\s|$))/gi, ' <div class="emoticon" id="eCry">$&</div> ')
- .replace(/(\s|^)(:|(=))-?o(?=(\s|$))/gi, ' <div class="emoticon" id="eGasp">$&</div> ')
- .replace(/(\s|^)(:|(=))-?D(?=(\s|$))/gi, ' <div class="emoticon" id="eGrin">$&</div> ')
- .replace(/(\s|^)(:|(=))-?\((?=(\s|$))/gi, ' <div class="emoticon" id="eSad">$&</div> ')
- .replace(/(\s|^)(:|(=))-?\)(?=(\s|$))/gi, ' <div class="emoticon" id="eSmile">$&</div> ')
- .replace(/(\s|^)-_-(?=(\s|$))/gi, ' <div class="emoticon" id="eSquint">$&</div> ')
- .replace(/(\s|^)(:|(=))-?p(?=(\s|$))/gi, ' <div class="emoticon" id="eTongue">$&</div> ')
- .replace(/(\s|^)(:|(=))-?(\/|s)(?=(\s|$))/gi, ' <div class="emoticon" id="eUnsure">$&</div> ')
- .replace(/(\s|^);-?\)(?=(\s|$))/gi, ' <div class="emoticon" id="eWink">$&</div> ')
- .replace(/(\s|^);-?\p(?=(\s|$))/gi, ' <div class="emoticon" id="eWinkTongue">$&</div> ')
- .replace(/(\s|^)\^(_|\.)?\^(?=(\s|$))/gi, ' <div class="emoticon" id="eYay">$&</div> ')
- .replace(/(\s|^)(:|(=))-?x\b(?=(\s|$))/gi, ' <div class="emoticon" id="eShut">$&</div> ')
- .replace(/(\s|^)\&lt\;3\b(?=(\s|$))/g, ' <span class="monospace">&#9829;</span> ');
-}
-
-// Convert Data URI to viewable/downloadable file.
-function addFile(message) {
- var mime = new RegExp('(data:(application\/((x-compressed)|(x-zip-compressed)|'
- + '(zip)))|(multipart\/x-zip))\;base64,(\\w|\\/|\\+|\\=|\\s)*$');
-
- if (match = message.match(/data:image\/\w+\;base64,(\w|\\|\/|\+|\=)*$/)) {
- message = message.replace(/data:image\/\w+\;base64,(\w|\\|\/|\+|\=)*$/,
- '<a href="' + match[0] + '" class="imageView" target="_blank">' + Cryptocat.language['chatWindow']['viewImage'] + '</a>');
- }
- else if (match = message.match(mime)) {
- message = message.replace(mime,
- '<a href="' + match[0] + '" class="fileView" target="_blank">' + Cryptocat.language['chatWindow']['downloadFile'] + '</a>');
- }
- return message;
-}
-
-// Add a `message` from `sender` to the `conversation` display and log.
-// Used internally.
-function addToConversation(message, sender, conversation) {
- if (!message) {
- return false;
- }
- initiateConversation(conversation);
- if (sender === myNickname) {
- lineDecoration = 1;
- audioNotification = 'snd/msgSend.webm';
- message = Strophe.xmlescape(message);
- }
- else {
- lineDecoration = 2;
- audioNotification = 'snd/msgGet.webm';
- if (desktopNotifications) {
- if ((conversation !== currentConversation) || (!windowFocus)) {
- Notification.createNotification('img/keygen.gif', sender, message);
- }
- }
- message = Strophe.xmlescape(message);
- if (message.match(myNickname)) {
- var nickRegEx = new RegExp(myNickname, 'g');
- message = message.replace(nickRegEx, '<span class="nickHighlight">$&</span>');
- lineDecoration = 3;
- }
- }
- message = addFile(message);
- message = addLinks(message);
- message = addEmoticons(message);
- message = message.replace(/:/g, '&#58;');
- var timeStamp = '<span class="timeStamp">' + currentTime(0) + '</span>';
- var sender = '<span class="sender">' + Strophe.xmlescape(shortenString(sender, 16)) + '</span>';
- message = '<div class="Line' + lineDecoration + '">' + timeStamp + sender + message + '</div>';
- conversations[conversation] += message;
- if (conversation === currentConversation) {
- $('#conversationWindow').append(message);
- }
- else {
- var backgroundColor = $('#buddy-' + conversation).css('background-color');
- $('#buddy-' + conversation).css('background-image', 'url("img/newMessage.png")');
- $('#buddy-' + conversation)
- .animate({'backgroundColor': '#A7D8F7'})
- .animate({'backgroundColor': backgroundColor});
- }
- if (audioNotifications) {
- playSound(audioNotification);
- }
- if (($('#conversationWindow')[0].scrollHeight - $('#conversationWindow').scrollTop()) < 1500) {
- scrollDown(600);
- }
-}
-
-// Handle nickname change (which may be done by non-Cryptocat XMPP clients)
-function changeNickname(oldNickname, newNickname) {
- otrKeys[newNickname] = otrKeys[oldNickname];
- multiParty.renameKeys(oldNickname, newNickname);
- conversations[newNickname] = conversations[oldNickname];
- conversationInfo[newNickname] = conversationInfo[oldNickname];
- buddyGoOffline(oldNickname);
-}
-
-// Handle buddy going offline
-function buddyGoOffline(nickname) {
- // Delete their encryption keys
- delete otrKeys[nickname];
- multiParty.removeKeys(nickname);
- if (($('#buddy-' + nickname).length !== 0)
- && ($('#buddy-' + nickname).attr('status') !== 'offline')) {
- if ((currentConversation !== nickname)
- && ($('#buddy-' + nickname).css('background-image') === 'none')) {
- $('#buddy-' + nickname).slideUp(500, function() {
- $(this).remove();
- });
- }
- else {
- $('#buddy-' + nickname).attr('status', 'offline');
- $('#buddy-' + nickname).animate({
- 'color': '#BBB',
- 'backgroundColor': '#222',
- 'borderLeftColor': '#111',
- 'borderBottom': 'none'
- });
- }
- }
- if (audioNotifications) {
- playSound('snd/userOffline.webm');
- }
-}
-
-// Handle incoming messages from the XMPP server.
-function handleMessage(message) {
- var from = $(message).attr('from');
- var nick = from.match(/\/\w+/)[0].substring(1);
- var type = $(message).attr('type');
- var body = $(message).find('body').text().replace(/\&quot;/g, '"');
- if (nick === myNickname) {
- return true;
- }
- if (type === 'groupchat' && groupChat) {
- try {
- body = JSON.parse(body);
- }
- catch(err) {
- return true;
- }
- if (body[myNickname] && body[myNickname]['message'].match(multiParty.requestRegEx)) {
- conn.muc.message(conversationName + '@' + conferenceServer, null, multiParty.sendPublicKey(nick), null);
- }
- else if (body[myNickname] || body['*']) {
- addToConversation(
- multiParty.receiveMessage(nick, myNickname, JSON.stringify(body)
- ), nick, 'main-Conversation');
- }
- }
- else if (type === 'chat') {
- otrKeys[nick].receiveMsg(body);
- }
- return true;
-}
-
-// Handle incoming presence updates from the XMPP server.
-function handlePresence(presence) {
- //console.log(presence);
- var nickname = $(presence).attr('from').match(/\/\w+/)[0].substring(1);
- if ($(presence).attr('type') === 'error') {
- if ($(presence).find('error').attr('code') === '409') {
- loginError = 1;
- logout();
- loginFail(Cryptocat.language['loginMessage']['nicknameInUse']);
- return false;
- }
- return true;
- }
- // Ignore if presence status is coming from myself
- if (nickname === myNickname) {
- return true;
- }
- // Detect nickname change (which may be done by non-Cryptocat XMPP clients)
- if ($(presence).find('status').attr('code') === '303') {
- var newNickname = $(presence).find('item').attr('nick');
- console.log(nickname + ' changed nick to ' + newNickname);
- changeNickname(nickname, newNickname);
- return true;
- }
- // Add to otrKeys if necessary
- if (nickname !== 'main-Conversation' && otrKeys[nickname] === undefined) {
- // var options = {
- // fragment_size: 8192,
- // send_interval: 400,
- // }
- otrKeys[nickname] = new OTR(myKey, uicb(nickname), iocb(nickname));
- otrKeys[nickname].REQUIRE_ENCRYPTION = true;
- }
- // Detect buddy going offline
- if ($(presence).attr('type') === 'unavailable') {
- buddyGoOffline(nickname);
- return true;
- }
- // Create buddy element if buddy is new
- else if ($('#buddy-' + nickname).length === 0) {
- buildBuddy(nickname);
- if (audioNotifications) {
- playSound('snd/userOnline.webm');
- }
- }
- // Handle buddy status change to 'available'
- else if ($(presence).find('show').text() === '' || $(presence).find('show').text() === 'chat') {
- if ($('#buddy-' + nickname).attr('status') !== 'online') {
- var status = 'online';
- var backgroundColor = '#76BDE5';
- var placement = '#buddiesOnline';
- }
- }
- // Handle buddy status change to 'away'
- else if ($('#buddy-' + nickname).attr('status') !== 'away') {
- var status = 'away';
- var backgroundColor = '#5588A5';
- var placement = '#buddiesAway';
- }
- // Perform status change
- $('#buddy-' + nickname).attr('status', status);
- if (placement) {
- $('#buddy-' + nickname).animate({
- 'color': '#FFF',
- 'backgroundColor': backgroundColor,
- 'borderLeftColor': '#97CEEC'
- });
- if (currentConversation !== nickname) {
- $('#buddy-' + nickname).slideUp('fast', function() {
- $(this).insertAfter(placement).slideDown('fast');
- });
- }
- }
- return true;
-}
-
-// Bind buddy click actions. Used internally.
-function bindBuddyClick(nickname) {
- $('#buddy-' + nickname).click(function() {
- if ($(this).prev().attr('id') === 'currentConversation') {
- $('#userInputText').focus();
- return true;
- }
- if (nickname !== 'main-Conversation') {
- $(this).css('background-image', 'none');
- }
- else {
- $(this).css('background-image', 'url("img/groupChat.png")');
- }
- if (currentConversation) {
- var oldConversation = currentConversation;
- if ($('#buddy-' + oldConversation).attr('status') === 'online') {
- var placement = '#buddiesOnline';
- var backgroundColor = '#76BDE5';
- var color = '#FFF';
- }
- else if ($('#buddy-' + oldConversation).attr('status') === 'away') {
- var placement = '#buddiesAway';
- var backgroundColor = '#5588A5';
- var color = '#FFF';
- }
- $('#buddy-' + oldConversation).slideUp('fast', function() {
- $(this).css('background-color', backgroundColor);
- $(this).css('color', color);
- $(this).css('border-bottom', 'none');
- $(this).insertAfter(placement).slideDown('fast');
- });
- }
- currentConversation = nickname;
- initiateConversation(currentConversation);
- $('#conversationWindow').html(conversations[currentConversation]);
- if (($(this).prev().attr('id') === 'buddiesOnline')
- || (($(this).prev().attr('id') === 'buddiesAway')
- && $('#buddiesOnline').next().attr('id') === 'buddiesAway')) {
- $(this).insertAfter('#currentConversation');
- $(this).animate({'background-color': '#97CEEC'});
- switchConversation(nickname);
- }
- else {
- $(this).slideUp('fast', function() {
- $(this).insertAfter('#currentConversation').slideDown('fast', function() {
- $(this).animate({'background-color': '#97CEEC'});
- switchConversation(nickname);
- });
- });
- }
- });
-}
-
-// Send encrypted file
-// File is converted into a base64 Data URI which is then sent as an OTR message.
-function sendFile(nickname) {
- var sendFileDialog = '<div class="bar">' + Cryptocat.language['chatWindow']['sendEncryptedFile'] + '</div>'
- + '<input type="file" id="fileSelector" name="file[]" />'
- + '<input type="button" id="fileSelectButton" class="button" value="select file" />'
- + '<div id="fileErrorField"></div>'
- + 'Only .zip files and images are accepted.<br />'
- + 'Maximum file size: ' + fileSize + ' kilobytes.';
- dialogBox(sendFileDialog, 1);
- $('#fileSelector').change(function(e) {
- e.stopPropagation();
- dataReader.onmessage = function(e) {
- if (e.data === 'typeError') {
- $('#fileErrorField').text('Please make sure your file is a .zip file or an image.');
- }
- else if (e.data === 'sizeError') {
- $('#fileErrorField').text('File cannot be larger than ' + fileSize + ' kilobytes');
- }
- else {
- otrKeys[nickname].sendMsg(e.data);
- addToConversation(e.data, myNickname, nickname);
- $('#dialogBoxClose').click();
- }
- };
- if (this.files) {
- dataReader.postMessage(this.files);
- }
- });
- $('#fileSelectButton').click(function() {
- $('#fileSelector').click();
- });
-}
-
-// Display buddy information, including fingerprints etc.
-function displayInfo(nickname) {
- nickname = Strophe.xmlescape(nickname);
- var displayInfoDialog = '<input type="button" class="bar" value="'
- + nickname + '"/><div id="displayInfo">'
- + Cryptocat.language['chatWindow']['otrFingerprint']
- + '<br /><span id="otrFingerprint"></span><br />'
- + '<div id="otrColorprint"></div><br />'
- + '<br />' + Cryptocat.language['chatWindow']['groupFingerprint']
- + '<br /><span id="multiPartyFingerprint"></span><br />'
- + '<div id="multiPartyColorprint"></div><br /></div>';
- // If OTR fingerprints have not been generated, show a progress bar and generate them.
- if ((nickname !== myNickname) && !otrKeys[nickname].msgstate) {
- var progressDialog = '<div id="progressBar"><div id="fill"></div></div>';
- dialogBox(progressDialog, 1);
- $('#progressBar').css('margin', '70px auto 0 auto');
- $('#fill').animate({'width': '100%', 'opacity': '1'}, 7000, 'linear');
- otrKeys[nickname].sendQueryMsg();
- $(document).bind('otrFingerprintReady', function() {
- $('#fill').stop().animate({'width': '100%', 'opacity': '1'}, 400, 'linear', function() {