PageRenderTime 66ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/WxSimulateWeb/Scripts/plupload/plupload.full.source.js

https://github.com/wxtech/WxSimulateWeb
JavaScript | 3289 lines | 3268 code | 19 blank | 2 comment | 511 complexity | 7475794029e088b591e21f2d9fb2f77b MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. /* RAS: modified to return server side error messages rather than HTTP Error */
  2. /*1.5.6*/
  3. (function () {
  4. var f = 0,
  5. l = [],
  6. n = {}, j = {}, a = {
  7. "<": "lt",
  8. ">": "gt",
  9. "&": "amp",
  10. '"': "quot",
  11. "'": "#39"
  12. }, m = /[<>&\"\']/g,
  13. b, c = window.setTimeout,
  14. d = {}, e;
  15. function h() {
  16. this.returnValue = false
  17. }
  18. function k() {
  19. this.cancelBubble = true
  20. } (function (o) {
  21. var p = o.split(/,/),
  22. q, s, r;
  23. for (q = 0; q < p.length; q += 2) {
  24. r = p[q + 1].split(/ /);
  25. for (s = 0; s < r.length; s++) {
  26. j[r[s]] = p[q]
  27. }
  28. }
  29. })("application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe");
  30. var g = {
  31. VERSION: "1.5.6",
  32. STOPPED: 1,
  33. STARTED: 2,
  34. QUEUED: 1,
  35. UPLOADING: 2,
  36. FAILED: 4,
  37. DONE: 5,
  38. GENERIC_ERROR: -100,
  39. HTTP_ERROR: -200,
  40. IO_ERROR: -300,
  41. SECURITY_ERROR: -400,
  42. INIT_ERROR: -500,
  43. FILE_SIZE_ERROR: -600,
  44. FILE_EXTENSION_ERROR: -601,
  45. IMAGE_FORMAT_ERROR: -700,
  46. IMAGE_MEMORY_ERROR: -701,
  47. IMAGE_DIMENSIONS_ERROR: -702,
  48. mimeTypes: j,
  49. ua: (function () {
  50. var s = navigator,
  51. r = s.userAgent,
  52. t = s.vendor,
  53. p, o, q;
  54. p = /WebKit/.test(r);
  55. q = p && t.indexOf("Apple") !== -1;
  56. o = window.opera && window.opera.buildNumber;
  57. return {
  58. windows: navigator.platform.indexOf("Win") !== -1,
  59. android: /Android/.test(r),
  60. ie: !p && !o && (/MSIE/gi).test(r) && (/Explorer/gi).test(s.appName),
  61. webkit: p,
  62. gecko: !p && /Gecko/.test(r),
  63. safari: q,
  64. opera: !!o
  65. }
  66. }()),
  67. typeOf: function (p) {
  68. return ({}).toString.call(p).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()
  69. },
  70. extend: function (o) {
  71. g.each(arguments, function (p, q) {
  72. if (q > 0) {
  73. g.each(p, function (s, r) {
  74. o[r] = s
  75. })
  76. }
  77. });
  78. return o
  79. },
  80. cleanName: function (o) {
  81. var p, q;
  82. q = [/[\300-\306]/g, "A", /[\340-\346]/g, "a", /\307/g, "C", /\347/g, "c", /[\310-\313]/g, "E", /[\350-\353]/g, "e", /[\314-\317]/g, "I", /[\354-\357]/g, "i", /\321/g, "N", /\361/g, "n", /[\322-\330]/g, "O", /[\362-\370]/g, "o", /[\331-\334]/g, "U", /[\371-\374]/g, "u"];
  83. for (p = 0; p < q.length; p += 2) {
  84. o = o.replace(q[p], q[p + 1])
  85. }
  86. o = o.replace(/\s+/g, "_");
  87. o = o.replace(/[^a-z0-9_\-\.]+/gi, "");
  88. return o
  89. },
  90. addRuntime: function (o, p) {
  91. p.name = o;
  92. l[o] = p;
  93. l.push(p);
  94. return p
  95. },
  96. guid: function () {
  97. var o = new Date().getTime().toString(32),
  98. p;
  99. for (p = 0; p < 5; p++) {
  100. o += Math.floor(Math.random() * 65535).toString(32)
  101. }
  102. return (g.guidPrefix || "p") + o + (f++).toString(32)
  103. },
  104. buildUrl: function (p, o) {
  105. var q = "";
  106. g.each(o, function (s, r) {
  107. q += (q ? "&" : "") + encodeURIComponent(r) + "=" + encodeURIComponent(s)
  108. });
  109. if (q) {
  110. p += (p.indexOf("?") > 0 ? "&" : "?") + q
  111. }
  112. return p
  113. },
  114. each: function (r, s) {
  115. var q, p, o;
  116. if (r) {
  117. q = r.length;
  118. if (q === b) {
  119. for (p in r) {
  120. if (r.hasOwnProperty(p)) {
  121. if (s(r[p], p) === false) {
  122. return
  123. }
  124. }
  125. }
  126. } else {
  127. for (o = 0; o < q; o++) {
  128. if (s(r[o], o) === false) {
  129. return
  130. }
  131. }
  132. }
  133. }
  134. },
  135. formatSize: function (o) {
  136. if (o === b || /\D/.test(o)) {
  137. return g.translate("N/A")
  138. }
  139. if (o > 1073741824) {
  140. return Math.round(o / 1073741824, 1) + " GB"
  141. }
  142. if (o > 1048576) {
  143. return Math.round(o / 1048576, 1) + " MB"
  144. }
  145. if (o > 1024) {
  146. return Math.round(o / 1024, 1) + " KB"
  147. }
  148. return o + " b"
  149. },
  150. getPos: function (p, t) {
  151. var u = 0,
  152. s = 0,
  153. w, v = document,
  154. q, r;
  155. p = p;
  156. t = t || v.body;
  157. function o(C) {
  158. var A, B, z = 0,
  159. D = 0;
  160. if (C) {
  161. B = C.getBoundingClientRect();
  162. A = v.compatMode === "CSS1Compat" ? v.documentElement : v.body;
  163. z = B.left + A.scrollLeft;
  164. D = B.top + A.scrollTop
  165. }
  166. return {
  167. x: z,
  168. y: D
  169. }
  170. }
  171. if (p && p.getBoundingClientRect && g.ua.ie && (!v.documentMode || v.documentMode < 8)) {
  172. q = o(p);
  173. r = o(t);
  174. return {
  175. x: q.x - r.x,
  176. y: q.y - r.y
  177. }
  178. }
  179. w = p;
  180. while (w && w != t && w.nodeType) {
  181. u += w.offsetLeft || 0;
  182. s += w.offsetTop || 0;
  183. w = w.offsetParent
  184. }
  185. w = p.parentNode;
  186. while (w && w != t && w.nodeType) {
  187. u -= w.scrollLeft || 0;
  188. s -= w.scrollTop || 0;
  189. w = w.parentNode
  190. }
  191. return {
  192. x: u,
  193. y: s
  194. }
  195. },
  196. getSize: function (o) {
  197. return {
  198. w: o.offsetWidth || o.clientWidth,
  199. h: o.offsetHeight || o.clientHeight
  200. }
  201. },
  202. parseSize: function (o) {
  203. var p;
  204. if (typeof (o) == "string") {
  205. o = /^([0-9]+)([mgk]?)$/.exec(o.toLowerCase().replace(/[^0-9mkg]/g, ""));
  206. p = o[2];
  207. o = +o[1];
  208. if (p == "g") {
  209. o *= 1073741824
  210. }
  211. if (p == "m") {
  212. o *= 1048576
  213. }
  214. if (p == "k") {
  215. o *= 1024
  216. }
  217. }
  218. return o
  219. },
  220. xmlEncode: function (o) {
  221. return o ? ("" + o).replace(m, function (p) {
  222. return a[p] ? "&" + a[p] + ";" : p
  223. }) : o
  224. },
  225. toArray: function (q) {
  226. var p, o = [];
  227. for (p = 0; p < q.length; p++) {
  228. o[p] = q[p]
  229. }
  230. return o
  231. },
  232. inArray: function (q, r) {
  233. if (r) {
  234. if (Array.prototype.indexOf) {
  235. return Array.prototype.indexOf.call(r, q)
  236. }
  237. for (var o = 0, p = r.length; o < p; o++) {
  238. if (r[o] === q) {
  239. return o
  240. }
  241. }
  242. }
  243. return -1
  244. },
  245. addI18n: function (o) {
  246. return g.extend(n, o)
  247. },
  248. translate: function (o) {
  249. return n[o] || o
  250. },
  251. isEmptyObj: function (o) {
  252. if (o === b) {
  253. return true
  254. }
  255. for (var p in o) {
  256. return false
  257. }
  258. return true
  259. },
  260. hasClass: function (q, p) {
  261. var o;
  262. if (q.className == "") {
  263. return false
  264. }
  265. o = new RegExp("(^|\\s+)" + p + "(\\s+|$)");
  266. return o.test(q.className)
  267. },
  268. addClass: function (p, o) {
  269. if (!g.hasClass(p, o)) {
  270. p.className = p.className == "" ? o : p.className.replace(/\s+$/, "") + " " + o
  271. }
  272. },
  273. removeClass: function (q, p) {
  274. var o = new RegExp("(^|\\s+)" + p + "(\\s+|$)");
  275. q.className = q.className.replace(o, function (s, r, t) {
  276. return r === " " && t === " " ? " " : ""
  277. })
  278. },
  279. getStyle: function (p, o) {
  280. if (p.currentStyle) {
  281. return p.currentStyle[o]
  282. } else {
  283. if (window.getComputedStyle) {
  284. return window.getComputedStyle(p, null)[o]
  285. }
  286. }
  287. },
  288. addEvent: function (t, o, u) {
  289. var s, r, q, p;
  290. p = arguments[3];
  291. o = o.toLowerCase();
  292. if (e === b) {
  293. e = "Plupload_" + g.guid()
  294. }
  295. if (t.addEventListener) {
  296. s = u;
  297. t.addEventListener(o, s, false)
  298. } else {
  299. if (t.attachEvent) {
  300. s = function () {
  301. var v = window.event;
  302. if (!v.target) {
  303. v.target = v.srcElement
  304. }
  305. v.preventDefault = h;
  306. v.stopPropagation = k;
  307. u(v)
  308. };
  309. t.attachEvent("on" + o, s)
  310. }
  311. }
  312. if (t[e] === b) {
  313. t[e] = g.guid()
  314. }
  315. if (!d.hasOwnProperty(t[e])) {
  316. d[t[e]] = {}
  317. }
  318. r = d[t[e]];
  319. if (!r.hasOwnProperty(o)) {
  320. r[o] = []
  321. }
  322. r[o].push({
  323. func: s,
  324. orig: u,
  325. key: p
  326. })
  327. },
  328. removeEvent: function (t, o) {
  329. var r, u, q;
  330. if (typeof (arguments[2]) == "function") {
  331. u = arguments[2]
  332. } else {
  333. q = arguments[2]
  334. }
  335. o = o.toLowerCase();
  336. if (t[e] && d[t[e]] && d[t[e]][o]) {
  337. r = d[t[e]][o]
  338. } else {
  339. return
  340. }
  341. for (var p = r.length - 1; p >= 0; p--) {
  342. if (r[p].key === q || r[p].orig === u) {
  343. if (t.removeEventListener) {
  344. t.removeEventListener(o, r[p].func, false)
  345. } else {
  346. if (t.detachEvent) {
  347. t.detachEvent("on" + o, r[p].func)
  348. }
  349. }
  350. r[p].orig = null;
  351. r[p].func = null;
  352. r.splice(p, 1);
  353. if (u !== b) {
  354. break
  355. }
  356. }
  357. }
  358. if (!r.length) {
  359. delete d[t[e]][o]
  360. }
  361. if (g.isEmptyObj(d[t[e]])) {
  362. delete d[t[e]];
  363. try {
  364. delete t[e]
  365. } catch (s) {
  366. t[e] = b
  367. }
  368. }
  369. },
  370. removeAllEvents: function (p) {
  371. var o = arguments[1];
  372. if (p[e] === b || !p[e]) {
  373. return
  374. }
  375. g.each(d[p[e]], function (r, q) {
  376. g.removeEvent(p, q, o)
  377. })
  378. }
  379. };
  380. g.Uploader = function (s) {
  381. var p = {}, v, u = [],
  382. r, q = false;
  383. v = new g.QueueProgress();
  384. s = g.extend({
  385. chunk_size: 0,
  386. multipart: true,
  387. multi_selection: true,
  388. file_data_name: "file",
  389. filters: []
  390. }, s);
  391. function t() {
  392. var x, y = 0,
  393. w;
  394. if (this.state == g.STARTED) {
  395. for (w = 0; w < u.length; w++) {
  396. if (!x && u[w].status == g.QUEUED) {
  397. x = u[w];
  398. x.status = g.UPLOADING;
  399. if (this.trigger("BeforeUpload", x)) {
  400. this.trigger("UploadFile", x)
  401. }
  402. } else {
  403. y++
  404. }
  405. }
  406. if (y == u.length) {
  407. this.stop();
  408. this.trigger("UploadComplete", u)
  409. }
  410. }
  411. }
  412. function o() {
  413. var x, w;
  414. v.reset();
  415. for (x = 0; x < u.length; x++) {
  416. w = u[x];
  417. if (w.size !== b) {
  418. v.size += w.size;
  419. v.loaded += w.loaded
  420. } else {
  421. v.size = b
  422. }
  423. if (w.status == g.DONE) {
  424. v.uploaded++
  425. } else {
  426. if (w.status == g.FAILED) {
  427. v.failed++
  428. } else {
  429. v.queued++
  430. }
  431. }
  432. }
  433. if (v.size === b) {
  434. v.percent = u.length > 0 ? Math.ceil(v.uploaded / u.length * 100) : 0
  435. } else {
  436. v.bytesPerSec = Math.ceil(v.loaded / ((+new Date() - r || 1) / 1000));
  437. v.percent = v.size > 0 ? Math.ceil(v.loaded / v.size * 100) : 0
  438. }
  439. }
  440. g.extend(this, {
  441. state: g.STOPPED,
  442. runtime: "",
  443. features: {},
  444. files: u,
  445. settings: s,
  446. total: v,
  447. id: g.guid(),
  448. init: function () {
  449. var B = this,
  450. C, y, x, A = 0,
  451. z;
  452. if (typeof (s.preinit) == "function") {
  453. s.preinit(B)
  454. } else {
  455. g.each(s.preinit, function (E, D) {
  456. B.bind(D, E)
  457. })
  458. }
  459. s.page_url = s.page_url || document.location.pathname.replace(/\/[^\/]+$/g, "/");
  460. if (!/^(\w+:\/\/|\/)/.test(s.url)) {
  461. s.url = s.page_url + s.url
  462. }
  463. s.chunk_size = g.parseSize(s.chunk_size);
  464. s.max_file_size = g.parseSize(s.max_file_size);
  465. B.bind("FilesAdded", function (D, G) {
  466. var F, E, I = 0,
  467. J, H = s.filters;
  468. if (H && H.length) {
  469. J = [];
  470. g.each(H, function (K) {
  471. g.each(K.extensions.split(/,/), function (L) {
  472. if (/^\s*\*\s*$/.test(L)) {
  473. J.push("\\.*")
  474. } else {
  475. J.push("\\." + L.replace(new RegExp("[" + ("/^$.*+?|()[]{}\\".replace(/./g, "\\$&")) + "]", "g"), "\\$&"))
  476. }
  477. })
  478. });
  479. J = new RegExp(J.join("|") + "$", "i")
  480. }
  481. for (F = 0; F < G.length; F++) {
  482. E = G[F];
  483. E.loaded = 0;
  484. E.percent = 0;
  485. E.status = g.QUEUED;
  486. if (J && !J.test(E.name)) {
  487. D.trigger("Error", {
  488. code: g.FILE_EXTENSION_ERROR,
  489. message: g.translate("File extension error."),
  490. file: E
  491. });
  492. continue
  493. }
  494. if (E.size !== b && E.size > s.max_file_size) {
  495. D.trigger("Error", {
  496. code: g.FILE_SIZE_ERROR,
  497. message: g.translate("File size error."),
  498. file: E
  499. });
  500. continue
  501. }
  502. u.push(E);
  503. I++
  504. }
  505. if (I) {
  506. c(function () {
  507. B.trigger("QueueChanged");
  508. B.refresh()
  509. }, 1)
  510. } else {
  511. return false
  512. }
  513. });
  514. if (s.unique_names) {
  515. B.bind("UploadFile", function (D, E) {
  516. var G = E.name.match(/\.([^.]+)$/),
  517. F = "tmp";
  518. if (G) {
  519. F = G[1]
  520. }
  521. E.target_name = E.id + "." + F
  522. })
  523. }
  524. B.bind("UploadProgress", function (D, E) {
  525. E.percent = E.size > 0 ? Math.ceil(E.loaded / E.size * 100) : 100;
  526. o()
  527. });
  528. B.bind("StateChanged", function (D) {
  529. if (D.state == g.STARTED) {
  530. r = (+new Date())
  531. } else {
  532. if (D.state == g.STOPPED) {
  533. for (C = D.files.length - 1; C >= 0; C--) {
  534. if (D.files[C].status == g.UPLOADING) {
  535. D.files[C].status = g.QUEUED;
  536. o()
  537. }
  538. }
  539. }
  540. }
  541. });
  542. B.bind("QueueChanged", o);
  543. B.bind("Error", function (D, E) {
  544. if (E.file) {
  545. E.file.status = g.FAILED;
  546. o();
  547. if (D.state == g.STARTED) {
  548. c(function () {
  549. t.call(B)
  550. }, 1)
  551. }
  552. }
  553. });
  554. B.bind("FileUploaded", function (D, E) {
  555. E.status = g.DONE;
  556. E.loaded = E.size;
  557. D.trigger("UploadProgress", E);
  558. c(function () {
  559. t.call(B)
  560. }, 1)
  561. });
  562. if (s.runtimes) {
  563. y = [];
  564. z = s.runtimes.split(/\s?,\s?/);
  565. for (C = 0; C < z.length; C++) {
  566. if (l[z[C]]) {
  567. y.push(l[z[C]])
  568. }
  569. }
  570. } else {
  571. y = l
  572. }
  573. function w() {
  574. var G = y[A++],
  575. F, D, E;
  576. if (G) {
  577. F = G.getFeatures();
  578. D = B.settings.required_features;
  579. if (D) {
  580. D = D.split(",");
  581. for (E = 0; E < D.length; E++) {
  582. if (!F[D[E]]) {
  583. w();
  584. return
  585. }
  586. }
  587. }
  588. G.init(B, function (H) {
  589. if (H && H.success) {
  590. B.features = F;
  591. B.runtime = G.name;
  592. B.trigger("Init", {
  593. runtime: G.name
  594. });
  595. B.trigger("PostInit");
  596. B.refresh()
  597. } else {
  598. w()
  599. }
  600. })
  601. } else {
  602. B.trigger("Error", {
  603. code: g.INIT_ERROR,
  604. message: g.translate("Init error.")
  605. })
  606. }
  607. }
  608. w();
  609. if (typeof (s.init) == "function") {
  610. s.init(B)
  611. } else {
  612. g.each(s.init, function (E, D) {
  613. B.bind(D, E)
  614. })
  615. }
  616. },
  617. refresh: function () {
  618. this.trigger("Refresh")
  619. },
  620. start: function () {
  621. if (u.length && this.state != g.STARTED) {
  622. this.state = g.STARTED;
  623. this.trigger("StateChanged");
  624. t.call(this)
  625. }
  626. },
  627. stop: function () {
  628. if (this.state != g.STOPPED) {
  629. this.state = g.STOPPED;
  630. this.trigger("CancelUpload");
  631. this.trigger("StateChanged")
  632. }
  633. },
  634. disableBrowse: function () {
  635. q = arguments[0] !== b ? arguments[0] : true;
  636. this.trigger("DisableBrowse", q)
  637. },
  638. getFile: function (x) {
  639. var w;
  640. for (w = u.length - 1; w >= 0; w--) {
  641. if (u[w].id === x) {
  642. return u[w]
  643. }
  644. }
  645. },
  646. removeFile: function (x) {
  647. var w;
  648. for (w = u.length - 1; w >= 0; w--) {
  649. if (u[w].id === x.id) {
  650. return this.splice(w, 1)[0]
  651. }
  652. }
  653. },
  654. splice: function (y, w) {
  655. var x;
  656. x = u.splice(y === b ? 0 : y, w === b ? u.length : w);
  657. this.trigger("FilesRemoved", x);
  658. this.trigger("QueueChanged");
  659. return x
  660. },
  661. trigger: function (x) {
  662. var z = p[x.toLowerCase()],
  663. y, w;
  664. if (z) {
  665. w = Array.prototype.slice.call(arguments);
  666. w[0] = this;
  667. for (y = 0; y < z.length; y++) {
  668. if (z[y].func.apply(z[y].scope, w) === false) {
  669. return false
  670. }
  671. }
  672. }
  673. return true
  674. },
  675. hasEventListener: function (w) {
  676. return !!p[w.toLowerCase()]
  677. },
  678. bind: function (w, y, x) {
  679. var z;
  680. w = w.toLowerCase();
  681. z = p[w] || [];
  682. z.push({
  683. func: y,
  684. scope: x || this
  685. });
  686. p[w] = z
  687. },
  688. unbind: function (w) {
  689. w = w.toLowerCase();
  690. var z = p[w],
  691. x, y = arguments[1];
  692. if (z) {
  693. if (y !== b) {
  694. for (x = z.length - 1; x >= 0; x--) {
  695. if (z[x].func === y) {
  696. z.splice(x, 1);
  697. break
  698. }
  699. }
  700. } else {
  701. z = []
  702. }
  703. if (!z.length) {
  704. delete p[w]
  705. }
  706. }
  707. },
  708. unbindAll: function () {
  709. var w = this;
  710. g.each(p, function (y, x) {
  711. w.unbind(x)
  712. })
  713. },
  714. destroy: function () {
  715. this.stop();
  716. this.trigger("Destroy");
  717. this.unbindAll()
  718. }
  719. })
  720. };
  721. g.File = function (r, p, q) {
  722. var o = this;
  723. o.id = r;
  724. o.name = p;
  725. o.size = q;
  726. o.loaded = 0;
  727. o.percent = 0;
  728. o.status = 0
  729. };
  730. g.Runtime = function () {
  731. this.getFeatures = function () { };
  732. this.init = function (o, p) { }
  733. };
  734. g.QueueProgress = function () {
  735. var o = this;
  736. o.size = 0;
  737. o.loaded = 0;
  738. o.uploaded = 0;
  739. o.failed = 0;
  740. o.queued = 0;
  741. o.percent = 0;
  742. o.bytesPerSec = 0;
  743. o.reset = function () {
  744. o.size = o.loaded = o.uploaded = o.failed = o.queued = o.percent = o.bytesPerSec = 0
  745. }
  746. };
  747. g.runtimes = {};
  748. window.plupload = g
  749. })();
  750. (function () {
  751. if (window.google && google.gears) {
  752. return
  753. }
  754. var a = null;
  755. if (typeof GearsFactory != "undefined") {
  756. a = new GearsFactory()
  757. } else {
  758. try {
  759. a = new ActiveXObject("Gears.Factory");
  760. if (a.getBuildInfo().indexOf("ie_mobile") != -1) {
  761. a.privateSetGlobalObject(this)
  762. }
  763. } catch (b) {
  764. if ((typeof navigator.mimeTypes != "undefined") && navigator.mimeTypes["application/x-googlegears"]) {
  765. a = document.createElement("object");
  766. a.style.display = "none";
  767. a.width = 0;
  768. a.height = 0;
  769. a.type = "application/x-googlegears";
  770. document.documentElement.appendChild(a)
  771. }
  772. }
  773. }
  774. if (!a) {
  775. return
  776. }
  777. if (!window.google) {
  778. window.google = {}
  779. }
  780. if (!google.gears) {
  781. google.gears = {
  782. factory: a
  783. }
  784. }
  785. })();
  786. (function (e, b, c, d) {
  787. var f = {};
  788. function a(h, k, m) {
  789. var g, j, l, o;
  790. j = google.gears.factory.create("beta.canvas");
  791. try {
  792. j.decode(h);
  793. if (!k.width) {
  794. k.width = j.width
  795. }
  796. if (!k.height) {
  797. k.height = j.height
  798. }
  799. o = Math.min(k.width / j.width, k.height / j.height);
  800. if (o < 1) {
  801. j.resize(Math.round(j.width * o), Math.round(j.height * o))
  802. } else {
  803. if (!k.quality || m !== "image/jpeg") {
  804. return h
  805. }
  806. }
  807. if (k.quality) {
  808. return j.encode(m, {
  809. quality: k.quality / 100
  810. })
  811. }
  812. return j.encode(m)
  813. } catch (n) { }
  814. return h
  815. }
  816. c.runtimes.Gears = c.addRuntime("gears", {
  817. getFeatures: function () {
  818. return {
  819. dragdrop: true,
  820. jpgresize: true,
  821. pngresize: true,
  822. chunks: true,
  823. progress: true,
  824. multipart: true,
  825. multi_selection: true
  826. }
  827. },
  828. init: function (l, n) {
  829. var m, h, g = false;
  830. if (!e.google || !google.gears) {
  831. return n({
  832. success: false
  833. })
  834. }
  835. try {
  836. m = google.gears.factory.create("beta.desktop")
  837. } catch (k) {
  838. return n({
  839. success: false
  840. })
  841. }
  842. function j(q) {
  843. var p, o, r = [],
  844. s;
  845. for (o = 0; o < q.length; o++) {
  846. p = q[o];
  847. s = c.guid();
  848. f[s] = p.blob;
  849. r.push(new c.File(s, p.name, p.blob.length))
  850. }
  851. l.trigger("FilesAdded", r)
  852. }
  853. l.bind("PostInit", function () {
  854. var p = l.settings,
  855. o = b.getElementById(p.drop_element);
  856. if (o) {
  857. c.addEvent(o, "dragover", function (q) {
  858. m.setDropEffect(q, "copy");
  859. q.preventDefault()
  860. }, l.id);
  861. c.addEvent(o, "drop", function (r) {
  862. var q = m.getDragData(r, "application/x-gears-files");
  863. if (q) {
  864. j(q.files)
  865. }
  866. r.preventDefault()
  867. }, l.id);
  868. o = 0
  869. }
  870. c.addEvent(b.getElementById(p.browse_button), "click", function (u) {
  871. var t = [],
  872. r, q, s;
  873. u.preventDefault();
  874. if (g) {
  875. return
  876. }
  877. no_type_restriction: for (r = 0; r < p.filters.length; r++) {
  878. s = p.filters[r].extensions.split(",");
  879. for (q = 0; q < s.length; q++) {
  880. if (s[q] === "*") {
  881. t = [];
  882. break no_type_restriction
  883. }
  884. t.push("." + s[q])
  885. }
  886. }
  887. m.openFiles(j, {
  888. singleFile: !p.multi_selection,
  889. filter: t
  890. })
  891. }, l.id)
  892. });
  893. l.bind("CancelUpload", function () {
  894. if (h.abort) {
  895. h.abort()
  896. }
  897. });
  898. l.bind("UploadFile", function (u, r) {
  899. var w = 0,
  900. v, s, t = 0,
  901. q = u.settings.resize,
  902. o;
  903. if (q && /\.(png|jpg|jpeg)$/i.test(r.name)) {
  904. f[r.id] = a(f[r.id], q, /\.png$/i.test(r.name) ? "image/png" : "image/jpeg")
  905. }
  906. r.size = f[r.id].length;
  907. s = u.settings.chunk_size;
  908. o = s > 0;
  909. v = Math.ceil(r.size / s);
  910. if (!o) {
  911. s = r.size;
  912. v = 1
  913. }
  914. function p() {
  915. var C, y = u.settings.multipart,
  916. x = 0,
  917. B = {
  918. name: r.target_name || r.name
  919. }, z = u.settings.url;
  920. function A(E) {
  921. var D, J = "----pluploadboundary" + c.guid(),
  922. G = "--",
  923. I = "\r\n",
  924. F, H;
  925. if (y) {
  926. h.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + J);
  927. D = google.gears.factory.create("beta.blobbuilder");
  928. c.each(c.extend(B, u.settings.multipart_params), function (L, K) {
  929. D.append(G + J + I + 'Content-Disposition: form-data; name="' + K + '"' + I + I);
  930. D.append(L + I)
  931. });
  932. H = c.mimeTypes[r.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream";
  933. D.append(G + J + I + 'Content-Disposition: form-data; name="' + u.settings.file_data_name + '"; filename="' + r.name + '"' + I + "Content-Type: " + H + I + I);
  934. D.append(E);
  935. D.append(I + G + J + G + I);
  936. F = D.getAsBlob();
  937. x = F.length - E.length;
  938. E = F
  939. }
  940. h.send(E)
  941. }
  942. if (r.status == c.DONE || r.status == c.FAILED || u.state == c.STOPPED) {
  943. return
  944. }
  945. if (o) {
  946. B.chunk = w;
  947. B.chunks = v
  948. }
  949. C = Math.min(s, r.size - (w * s));
  950. if (!y) {
  951. z = c.buildUrl(u.settings.url, B)
  952. }
  953. h = google.gears.factory.create("beta.httprequest");
  954. h.open("POST", z);
  955. if (!y) {
  956. h.setRequestHeader("Content-Disposition", 'attachment; filename="' + r.name + '"');
  957. h.setRequestHeader("Content-Type", "application/octet-stream")
  958. }
  959. c.each(u.settings.headers, function (E, D) {
  960. h.setRequestHeader(D, E)
  961. });
  962. h.upload.onprogress = function (D) {
  963. r.loaded = t + D.loaded - x;
  964. u.trigger("UploadProgress", r)
  965. };
  966. h.onreadystatechange = function () {
  967. var D;
  968. if (h.readyState == 4 && u.state !== c.STOPPED) {
  969. if (h.status == 200) {
  970. D = {
  971. chunk: w,
  972. chunks: v,
  973. response: h.responseText,
  974. status: h.status
  975. };
  976. u.trigger("ChunkUploaded", r, D);
  977. if (D.cancelled) {
  978. r.status = c.FAILED;
  979. return
  980. }
  981. t += C;
  982. if (++w >= v) {
  983. r.status = c.DONE;
  984. u.trigger("FileUploaded", r, {
  985. response: h.responseText,
  986. status: h.status
  987. })
  988. } else {
  989. p()
  990. }
  991. } else {
  992. var err = "HTTP Error.";
  993. var xhr = this;
  994. try {
  995. var json = xhr.responseText;
  996. var rpc = JSON.parse(json);
  997. err = rpc.error.message;
  998. }
  999. catch (ex) { }
  1000. u.trigger("Error", {
  1001. code: c.HTTP_ERROR,
  1002. message: c.translate(err),
  1003. file: r,
  1004. chunk: w,
  1005. chunks: v,
  1006. status: h.status
  1007. })
  1008. }
  1009. }
  1010. };
  1011. if (w < v) {
  1012. A(f[r.id].slice(w * s, C))
  1013. }
  1014. }
  1015. p()
  1016. });
  1017. l.bind("DisableBrowse", function (o, p) {
  1018. g = p
  1019. });
  1020. l.bind("Destroy", function (o) {
  1021. var p, q, r = {
  1022. browseButton: o.settings.browse_button,
  1023. dropElm: o.settings.drop_element
  1024. };
  1025. for (p in r) {
  1026. q = b.getElementById(r[p]);
  1027. if (q) {
  1028. c.removeAllEvents(q, o.id)
  1029. }
  1030. }
  1031. });
  1032. n({
  1033. success: true
  1034. })
  1035. }
  1036. })
  1037. })(window, document, plupload);
  1038. (function (g, b, d, e) {
  1039. var a = {}, h = {};
  1040. function c(o) {
  1041. var n, m = typeof o,
  1042. j, l, k;
  1043. if (o === e || o === null) {
  1044. return "null"
  1045. }
  1046. if (m === "string") {
  1047. n = "\bb\tt\nn\ff\rr\"\"''\\\\";
  1048. return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, function (r, q) {
  1049. var p = n.indexOf(q);
  1050. if (p + 1) {
  1051. return "\\" + n.charAt(p + 1)
  1052. }
  1053. r = q.charCodeAt().toString(16);
  1054. return "\\u" + "0000".substring(r.length) + r
  1055. }) + '"'
  1056. }
  1057. if (m == "object") {
  1058. j = o.length !== e;
  1059. n = "";
  1060. if (j) {
  1061. for (l = 0; l < o.length; l++) {
  1062. if (n) {
  1063. n += ","
  1064. }
  1065. n += c(o[l])
  1066. }
  1067. n = "[" + n + "]"
  1068. } else {
  1069. for (k in o) {
  1070. if (o.hasOwnProperty(k)) {
  1071. if (n) {
  1072. n += ","
  1073. }
  1074. n += c(k) + ":" + c(o[k])
  1075. }
  1076. }
  1077. n = "{" + n + "}"
  1078. }
  1079. return n
  1080. }
  1081. return "" + o
  1082. }
  1083. function f(s) {
  1084. var v = false,
  1085. j = null,
  1086. o = null,
  1087. k, l, m, u, n, q = 0;
  1088. try {
  1089. try {
  1090. o = new ActiveXObject("AgControl.AgControl");
  1091. if (o.IsVersionSupported(s)) {
  1092. v = true
  1093. }
  1094. o = null
  1095. } catch (r) {
  1096. var p = navigator.plugins["Silverlight Plug-In"];
  1097. if (p) {
  1098. k = p.description;
  1099. if (k === "1.0.30226.2") {
  1100. k = "2.0.30226.2"
  1101. }
  1102. l = k.split(".");
  1103. while (l.length > 3) {
  1104. l.pop()
  1105. }
  1106. while (l.length < 4) {
  1107. l.push(0)
  1108. }
  1109. m = s.split(".");
  1110. while (m.length > 4) {
  1111. m.pop()
  1112. }
  1113. do {
  1114. u = parseInt(m[q], 10);
  1115. n = parseInt(l[q], 10);
  1116. q++
  1117. } while (q < m.length && u === n);
  1118. if (u <= n && !isNaN(u)) {
  1119. v = true
  1120. }
  1121. }
  1122. }
  1123. } catch (t) {
  1124. v = false
  1125. }
  1126. return v
  1127. }
  1128. d.silverlight = {
  1129. trigger: function (n, k) {
  1130. var m = a[n],
  1131. l, j;
  1132. if (m) {
  1133. j = d.toArray(arguments).slice(1);
  1134. j[0] = "Silverlight:" + k;
  1135. setTimeout(function () {
  1136. m.trigger.apply(m, j)
  1137. }, 0)
  1138. }
  1139. }
  1140. };
  1141. d.runtimes.Silverlight = d.addRuntime("silverlight", {
  1142. getFeatures: function () {
  1143. return {
  1144. jpgresize: true,
  1145. pngresize: true,
  1146. chunks: true,
  1147. progress: true,
  1148. multipart: true,
  1149. multi_selection: true
  1150. }
  1151. },
  1152. init: function (p, q) {
  1153. var o, m = "",
  1154. n = p.settings.filters,
  1155. l, k = b.body;
  1156. if (!f("2.0.31005.0") || (g.opera && g.opera.buildNumber)) {
  1157. q({
  1158. success: false
  1159. });
  1160. return
  1161. }
  1162. h[p.id] = false;
  1163. a[p.id] = p;
  1164. o = b.createElement("div");
  1165. o.id = p.id + "_silverlight_container";
  1166. d.extend(o.style, {
  1167. position: "absolute",
  1168. top: "0px",
  1169. background: p.settings.shim_bgcolor || "transparent",
  1170. zIndex: 99999,
  1171. width: "100px",
  1172. height: "100px",
  1173. overflow: "hidden",
  1174. opacity: p.settings.shim_bgcolor || b.documentMode > 8 ? "" : 0.01
  1175. });
  1176. o.className = "plupload silverlight";
  1177. if (p.settings.container) {
  1178. k = b.getElementById(p.settings.container);
  1179. if (d.getStyle(k, "position") === "static") {
  1180. k.style.position = "relative"
  1181. }
  1182. }
  1183. k.appendChild(o);
  1184. for (l = 0; l < n.length; l++) {
  1185. m += (m != "" ? "|" : "") + n[l].title + " | *." + n[l].extensions.replace(/,/g, ";*.")
  1186. }
  1187. o.innerHTML = '<object id="' + p.id + '_silverlight" data="data:application/x-silverlight," type="application/x-silverlight-2" style="outline:none;" width="1024" height="1024"><param name="source" value="' + p.settings.silverlight_xap_url + '"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="id=' + p.id + ",filter=" + m + ",multiselect=" + p.settings.multi_selection + '"/></object>';
  1188. function j() {
  1189. return b.getElementById(p.id + "_silverlight").content.Upload
  1190. }
  1191. p.bind("Silverlight:Init", function () {
  1192. var r, s = {};
  1193. if (h[p.id]) {
  1194. return
  1195. }
  1196. h[p.id] = true;
  1197. p.bind("Silverlight:StartSelectFiles", function (t) {
  1198. r = []
  1199. });
  1200. p.bind("Silverlight:SelectFile", function (t, w, u, v) {
  1201. var x;
  1202. x = d.guid();
  1203. s[x] = w;
  1204. s[w] = x;
  1205. r.push(new d.File(x, u, v))
  1206. });
  1207. p.bind("Silverlight:SelectSuccessful", function () {
  1208. if (r.length) {
  1209. p.trigger("FilesAdded", r)
  1210. }
  1211. });
  1212. p.bind("Silverlight:UploadChunkError", function (t, w, u, x, v) {
  1213. p.trigger("Error", {
  1214. code: d.IO_ERROR,
  1215. message: "IO Error.",
  1216. details: v,
  1217. file: t.getFile(s[w])
  1218. })
  1219. });
  1220. p.bind("Silverlight:UploadFileProgress", function (t, x, u, w) {
  1221. var v = t.getFile(s[x]);
  1222. if (v.status != d.FAILED) {
  1223. v.size = w;
  1224. v.loaded = u;
  1225. t.trigger("UploadProgress", v)
  1226. }
  1227. });
  1228. p.bind("Refresh", function (t) {
  1229. var u, v, w;
  1230. u = b.getElementById(t.settings.browse_button);
  1231. if (u) {
  1232. v = d.getPos(u, b.getElementById(t.settings.container));
  1233. w = d.getSize(u);
  1234. d.extend(b.getElementById(t.id + "_silverlight_container").style, {
  1235. top: v.y + "px",
  1236. left: v.x + "px",
  1237. width: w.w + "px",
  1238. height: w.h + "px"
  1239. })
  1240. }
  1241. });
  1242. p.bind("Silverlight:UploadChunkSuccessful", function (t, w, u, z, y) {
  1243. var x, v = t.getFile(s[w]);
  1244. x = {
  1245. chunk: u,
  1246. chunks: z,
  1247. response: y
  1248. };
  1249. t.trigger("ChunkUploaded", v, x);
  1250. if (v.status != d.FAILED && t.state !== d.STOPPED) {
  1251. j().UploadNextChunk()
  1252. }
  1253. if (u == z - 1) {
  1254. v.status = d.DONE;
  1255. t.trigger("FileUploaded", v, {
  1256. response: y
  1257. })
  1258. }
  1259. });
  1260. p.bind("Silverlight:UploadSuccessful", function (t, w, u) {
  1261. var v = t.getFile(s[w]);
  1262. v.status = d.DONE;
  1263. t.trigger("FileUploaded", v, {
  1264. response: u
  1265. })
  1266. });
  1267. p.bind("FilesRemoved", function (t, v) {
  1268. var u;
  1269. for (u = 0; u < v.length; u++) {
  1270. j().RemoveFile(s[v[u].id])
  1271. }
  1272. });
  1273. p.bind("UploadFile", function (t, v) {
  1274. var w = t.settings,
  1275. u = w.resize || {};
  1276. j().UploadFile(s[v.id], t.settings.url, c({
  1277. name: v.target_name || v.name,
  1278. mime: d.mimeTypes[v.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream",
  1279. chunk_size: w.chunk_size,
  1280. image_width: u.width,
  1281. image_height: u.height,
  1282. image_quality: u.quality,
  1283. multipart: !!w.multipart,
  1284. multipart_params: w.multipart_params || {},
  1285. file_data_name: w.file_data_name,
  1286. headers: w.headers
  1287. }))
  1288. });
  1289. p.bind("CancelUpload", function () {
  1290. j().CancelUpload()
  1291. });
  1292. p.bind("Silverlight:MouseEnter", function (t) {
  1293. var u, v;
  1294. u = b.getElementById(p.settings.browse_button);
  1295. v = t.settings.browse_button_hover;
  1296. if (u && v) {
  1297. d.addClass(u, v)
  1298. }
  1299. });
  1300. p.bind("Silverlight:MouseLeave", function (t) {
  1301. var u, v;
  1302. u = b.getElementById(p.settings.browse_button);
  1303. v = t.settings.browse_button_hover;
  1304. if (u && v) {
  1305. d.removeClass(u, v)
  1306. }
  1307. });
  1308. p.bind("Silverlight:MouseLeftButtonDown", function (t) {
  1309. var u, v;
  1310. u = b.getElementById(p.settings.browse_button);
  1311. v = t.settings.browse_button_active;
  1312. if (u && v) {
  1313. d.addClass(u, v);
  1314. d.addEvent(b.body, "mouseup", function () {
  1315. d.removeClass(u, v)
  1316. })
  1317. }
  1318. });
  1319. p.bind("Sliverlight:StartSelectFiles", function (t) {
  1320. var u, v;
  1321. u = b.getElementById(p.settings.browse_button);
  1322. v = t.settings.browse_button_active;
  1323. if (u && v) {
  1324. d.removeClass(u, v)
  1325. }
  1326. });
  1327. p.bind("DisableBrowse", functi

Large files files are truncated, but you can click here to view the full file