PageRenderTime 72ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/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
  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", function (t, u) {
  1328. j().DisableBrowse(u)
  1329. });
  1330. p.bind("Destroy", function (t) {
  1331. var u;
  1332. d.removeAllEvents(b.body, t.id);
  1333. delete h[t.id];
  1334. delete a[t.id];
  1335. u = b.getElementById(t.id + "_silverlight_container");
  1336. if (u) {
  1337. u.parentNode.removeChild(u)
  1338. }
  1339. });
  1340. q({
  1341. success: true
  1342. })
  1343. })
  1344. }
  1345. })
  1346. })(window, document, plupload);
  1347. (function (f, b, d, e) {
  1348. var a = {}, g = {};
  1349. function c() {
  1350. var h;
  1351. try {
  1352. h = navigator.plugins["Shockwave Flash"];
  1353. h = h.description
  1354. } catch (k) {
  1355. try {
  1356. h = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")
  1357. } catch (j) {
  1358. h = "0.0"
  1359. }
  1360. }
  1361. h = h.match(/\d+/g);
  1362. return parseFloat(h[0] + "." + h[1])
  1363. }
  1364. d.flash = {
  1365. trigger: function (k, h, j) {
  1366. setTimeout(function () {
  1367. var n = a[k],
  1368. m, l;
  1369. if (n) {
  1370. n.trigger("Flash:" + h, j)
  1371. }
  1372. }, 0)
  1373. }
  1374. };
  1375. d.runtimes.Flash = d.addRuntime("flash", {
  1376. getFeatures: function () {
  1377. return {
  1378. jpgresize: true,
  1379. pngresize: true,
  1380. maxWidth: 8091,
  1381. maxHeight: 8091,
  1382. chunks: true,
  1383. progress: true,
  1384. multipart: true,
  1385. multi_selection: true
  1386. }
  1387. },
  1388. init: function (n, p) {
  1389. var l, m, h = 0,
  1390. j = b.body;
  1391. if (c() < 10) {
  1392. p({
  1393. success: false
  1394. });
  1395. return
  1396. }
  1397. g[n.id] = false;
  1398. a[n.id] = n;
  1399. l = b.getElementById(n.settings.browse_button);
  1400. m = b.createElement("div");
  1401. m.id = n.id + "_flash_container";
  1402. d.extend(m.style, {
  1403. position: "absolute",
  1404. top: "0px",
  1405. background: n.settings.shim_bgcolor || "transparent",
  1406. zIndex: 99999,
  1407. width: "100%",
  1408. height: "100%"
  1409. });
  1410. m.className = "plupload flash";
  1411. if (n.settings.container) {
  1412. j = b.getElementById(n.settings.container);
  1413. if (d.getStyle(j, "position") === "static") {
  1414. j.style.position = "relative"
  1415. }
  1416. }
  1417. j.appendChild(m);
  1418. (function () {
  1419. var q, r;
  1420. q = '<object id="' + n.id + '_flash" type="application/x-shockwave-flash" data="' + n.settings.flash_swf_url + '" ';
  1421. if (d.ua.ie) {
  1422. q += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
  1423. }
  1424. q += 'width="100%" height="100%" style="outline:0"><param name="movie" value="' + n.settings.flash_swf_url + '" /><param name="flashvars" value="id=' + escape(n.id) + '" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>';
  1425. if (d.ua.ie) {
  1426. r = b.createElement("div");
  1427. m.appendChild(r);
  1428. r.outerHTML = q;
  1429. r = null
  1430. } else {
  1431. m.innerHTML = q
  1432. }
  1433. }());
  1434. function o() {
  1435. return b.getElementById(n.id + "_flash")
  1436. }
  1437. function k() {
  1438. if (h++ > 5000) {
  1439. p({
  1440. success: false
  1441. });
  1442. return
  1443. }
  1444. if (g[n.id] === false) {
  1445. setTimeout(k, 1)
  1446. }
  1447. }
  1448. k();
  1449. l = m = null;
  1450. n.bind("Destroy", function (q) {
  1451. var r;
  1452. d.removeAllEvents(b.body, q.id);
  1453. delete g[q.id];
  1454. delete a[q.id];
  1455. r = b.getElementById(q.id + "_flash_container");
  1456. if (r) {
  1457. r.parentNode.removeChild(r)
  1458. }
  1459. });
  1460. n.bind("Flash:Init", function () {
  1461. var s = {}, r;
  1462. try {
  1463. o().setFileFilters(n.settings.filters, n.settings.multi_selection)
  1464. } catch (q) {
  1465. p({
  1466. success: false
  1467. });
  1468. return
  1469. }
  1470. if (g[n.id]) {
  1471. return
  1472. }
  1473. g[n.id] = true;
  1474. n.bind("UploadFile", function (t, v) {
  1475. var w = t.settings,
  1476. u = n.settings.resize || {};
  1477. o().uploadFile(s[v.id], w.url, {
  1478. name: v.target_name || v.name,
  1479. mime: d.mimeTypes[v.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream",
  1480. chunk_size: w.chunk_size,
  1481. width: u.width,
  1482. height: u.height,
  1483. quality: u.quality,
  1484. multipart: w.multipart,
  1485. multipart_params: w.multipart_params || {},
  1486. file_data_name: w.file_data_name,
  1487. format: /\.(jpg|jpeg)$/i.test(v.name) ? "jpg" : "png",
  1488. headers: w.headers,
  1489. urlstream_upload: w.urlstream_upload
  1490. })
  1491. });
  1492. n.bind("CancelUpload", function () {
  1493. o().cancelUpload()
  1494. });
  1495. n.bind("Flash:UploadProcess", function (u, t) {
  1496. var v = u.getFile(s[t.id]);
  1497. if (v.status != d.FAILED) {
  1498. v.loaded = t.loaded;
  1499. v.size = t.size;
  1500. u.trigger("UploadProgress", v)
  1501. }
  1502. });
  1503. n.bind("Flash:UploadChunkComplete", function (t, v) {
  1504. var w, u = t.getFile(s[v.id]);
  1505. w = {
  1506. chunk: v.chunk,
  1507. chunks: v.chunks,
  1508. response: v.text
  1509. };
  1510. t.trigger("ChunkUploaded", u, w);
  1511. if (u.status !== d.FAILED && t.state !== d.STOPPED) {
  1512. o().uploadNextChunk()
  1513. }
  1514. if (v.chunk == v.chunks - 1) {
  1515. u.status = d.DONE;
  1516. t.trigger("FileUploaded", u, {
  1517. response: v.text
  1518. })
  1519. }
  1520. });
  1521. n.bind("Flash:SelectFiles", function (t, w) {
  1522. var v, u, x = [],
  1523. y;
  1524. for (u = 0; u < w.length; u++) {
  1525. v = w[u];
  1526. y = d.guid();
  1527. s[y] = v.id;
  1528. s[v.id] = y;
  1529. x.push(new d.File(y, v.name, v.size))
  1530. }
  1531. if (x.length) {
  1532. n.trigger("FilesAdded", x)
  1533. }
  1534. });
  1535. n.bind("Flash:SecurityError", function (t, u) {
  1536. n.trigger("Error", {
  1537. code: d.SECURITY_ERROR,
  1538. message: d.translate("Security error."),
  1539. details: u.message,
  1540. file: n.getFile(s[u.id])
  1541. })
  1542. });
  1543. n.bind("Flash:GenericError", function (t, u) {
  1544. n.trigger("Error", {
  1545. code: d.GENERIC_ERROR,
  1546. message: d.translate("Generic error."),
  1547. details: u.message,
  1548. file: n.getFile(s[u.id])
  1549. })
  1550. });
  1551. n.bind("Flash:IOError", function (t, u) {
  1552. n.trigger("Error", {
  1553. code: d.IO_ERROR,
  1554. message: d.translate("IO error."),
  1555. details: u.message,
  1556. file: n.getFile(s[u.id])
  1557. })
  1558. });
  1559. n.bind("Flash:ImageError", function (t, u) {
  1560. n.trigger("Error", {
  1561. code: parseInt(u.code, 10),
  1562. message: d.translate("Image error."),
  1563. file: n.getFile(s[u.id])
  1564. })
  1565. });
  1566. n.bind("Flash:StageEvent:rollOver", function (t) {
  1567. var u, v;
  1568. u = b.getElementById(n.settings.browse_button);
  1569. v = t.settings.browse_button_hover;
  1570. if (u && v) {
  1571. d.addClass(u, v)
  1572. }
  1573. });
  1574. n.bind("Flash:StageEvent:rollOut", function (t) {
  1575. var u, v;
  1576. u = b.getElementById(n.settings.browse_button);
  1577. v = t.settings.browse_button_hover;
  1578. if (u && v) {
  1579. d.removeClass(u, v)
  1580. }
  1581. });
  1582. n.bind("Flash:StageEvent:mouseDown", function (t) {
  1583. var u, v;
  1584. u = b.getElementById(n.settings.browse_button);
  1585. v = t.settings.browse_button_active;
  1586. if (u && v) {
  1587. d.addClass(u, v);
  1588. d.addEvent(b.body, "mouseup", function () {
  1589. d.removeClass(u, v)
  1590. }, t.id)
  1591. }
  1592. });
  1593. n.bind("Flash:StageEvent:mouseUp", function (t) {
  1594. var u, v;
  1595. u = b.getElementById(n.settings.browse_button);
  1596. v = t.settings.browse_button_active;
  1597. if (u && v) {
  1598. d.removeClass(u, v)
  1599. }
  1600. });
  1601. n.bind("Flash:ExifData", function (t, u) {
  1602. n.trigger("ExifData", n.getFile(s[u.id]), u.data)
  1603. });
  1604. n.bind("Flash:GpsData", function (t, u) {
  1605. n.trigger("GpsData", n.getFile(s[u.id]), u.data)
  1606. });
  1607. n.bind("QueueChanged", function (t) {
  1608. n.refresh()
  1609. });
  1610. n.bind("FilesRemoved", function (t, v) {
  1611. var u;
  1612. for (u = 0; u < v.length; u++) {
  1613. o().removeFile(s[v[u].id])
  1614. }
  1615. });
  1616. n.bind("StateChanged", function (t) {
  1617. n.refresh()
  1618. });
  1619. n.bind("Refresh", function (t) {
  1620. var u, v, w;
  1621. o().setFileFilters(n.settings.filters, n.settings.multi_selection);
  1622. u = b.getElementById(t.settings.browse_button);
  1623. if (u) {
  1624. v = d.getPos(u, b.getElementById(t.settings.container));
  1625. w = d.getSize(u);
  1626. d.extend(b.getElementById(t.id + "_flash_container").style, {
  1627. top: v.y + "px",
  1628. left: v.x + "px",
  1629. width: w.w + "px",
  1630. height: w.h + "px"
  1631. })
  1632. }
  1633. });
  1634. n.bind("DisableBrowse", function (t, u) {
  1635. o().disableBrowse(u)
  1636. });
  1637. p({
  1638. success: true
  1639. })
  1640. })
  1641. }
  1642. })
  1643. })(window, document, plupload);
  1644. (function (a) {
  1645. a.runtimes.BrowserPlus = a.addRuntime("browserplus", {
  1646. getFeatures: function () {
  1647. return {
  1648. dragdrop: true,
  1649. jpgresize: true,
  1650. pngresize: true,
  1651. chunks: true,
  1652. progress: true,
  1653. multipart: true,
  1654. multi_selection: true
  1655. }
  1656. },
  1657. init: function (g, j) {
  1658. var e = window.BrowserPlus,
  1659. h = {}, d = g.settings,
  1660. c = d.resize;
  1661. function f(o) {
  1662. var n, m, k = [],
  1663. l, p;
  1664. for (m = 0; m < o.length; m++) {
  1665. l = o[m];
  1666. p = a.guid();
  1667. h[p] = l;
  1668. k.push(new a.File(p, l.name, l.size))
  1669. }
  1670. if (m) {
  1671. g.trigger("FilesAdded", k)
  1672. }
  1673. }
  1674. function b() {
  1675. var k = false;
  1676. g.bind("PostInit", function () {
  1677. var o, m = d.drop_element,
  1678. q = g.id + "_droptarget",
  1679. l = document.getElementById(m),
  1680. n;
  1681. function r(t, s) {
  1682. e.DragAndDrop.AddDropTarget({
  1683. id: t
  1684. }, function (u) {
  1685. e.DragAndDrop.AttachCallbacks({
  1686. id: t,
  1687. hover: function (v) {
  1688. if (!v && s) {
  1689. s()
  1690. }
  1691. },
  1692. drop: function (v) {
  1693. if (s) {
  1694. s()
  1695. }
  1696. f(v)
  1697. }
  1698. }, function () { })
  1699. })
  1700. }
  1701. function p() {
  1702. document.getElementById(q).style.top = "-1000px"
  1703. }
  1704. if (l) {
  1705. if (document.attachEvent && (/MSIE/gi).test(navigator.userAgent)) {
  1706. o = document.createElement("div");
  1707. o.setAttribute("id", q);
  1708. a.extend(o.style, {
  1709. position: "absolute",
  1710. top: "-1000px",
  1711. background: "red",
  1712. filter: "alpha(opacity=0)",
  1713. opacity: 0
  1714. });
  1715. document.body.appendChild(o);
  1716. a.addEvent(l, "dragenter", function (t) {
  1717. var s, u;
  1718. s = document.getElementById(m);
  1719. u = a.getPos(s);
  1720. a.extend(document.getElementById(q).style, {
  1721. top: u.y + "px",
  1722. left: u.x + "px",
  1723. width: s.offsetWidth + "px",
  1724. height: s.offsetHeight + "px"
  1725. })
  1726. });
  1727. r(q, p)
  1728. } else {
  1729. r(m)
  1730. }
  1731. }
  1732. a.addEvent(document.getElementById(d.browse_button), "click", function (y) {
  1733. var s = [],
  1734. u, t, x = d.filters,
  1735. w, v;
  1736. y.preventDefault();
  1737. if (k) {
  1738. return
  1739. }
  1740. no_type_restriction: for (u = 0; u < x.length; u++) {
  1741. w = x[u].extensions.split(",");
  1742. for (t = 0; t < w.length; t++) {
  1743. if (w[t] === "*") {
  1744. s = [];
  1745. break no_type_restriction
  1746. }
  1747. v = a.mimeTypes[w[t]];
  1748. if (v && a.inArray(v, s) === -1) {
  1749. s.push(a.mimeTypes[w[t]])
  1750. }
  1751. }
  1752. }
  1753. e.FileBrowse.OpenBrowseDialog({
  1754. mimeTypes: s
  1755. }, function (z) {
  1756. if (z.success) {
  1757. f(z.value)
  1758. }
  1759. })
  1760. });
  1761. l = o = null
  1762. });
  1763. g.bind("CancelUpload", function () {
  1764. e.Uploader.cancel({}, function () { })
  1765. });
  1766. g.bind("DisableBrowse", function (l, m) {
  1767. k = m
  1768. });
  1769. g.bind("UploadFile", function (o, l) {
  1770. var n = h[l.id],
  1771. t = {}, m = o.settings.chunk_size,
  1772. p, q = [];
  1773. function s(u, w) {
  1774. var v;
  1775. if (l.status == a.FAILED) {
  1776. return
  1777. }
  1778. t.name = l.target_name || l.name;
  1779. if (m) {
  1780. t.chunk = "" + u;
  1781. t.chunks = "" + w
  1782. }
  1783. v = q.shift();
  1784. e.Uploader.upload({
  1785. url: o.settings.url,
  1786. files: {
  1787. file: v
  1788. },
  1789. cookies: document.cookies,
  1790. postvars: a.extend(t, o.settings.multipart_params),
  1791. progressCallback: function (z) {
  1792. var y, x = 0;
  1793. p[u] = parseInt(z.filePercent * v.size / 100, 10);
  1794. for (y = 0; y < p.length; y++) {
  1795. x += p[y]
  1796. }
  1797. l.loaded = x;
  1798. o.trigger("UploadProgress", l)
  1799. }
  1800. }, function (y) {
  1801. var x, z;
  1802. if (y.success) {
  1803. x = y.value.statusCode;
  1804. if (m) {
  1805. o.trigger("ChunkUploaded", l, {
  1806. chunk: u,
  1807. chunks: w,
  1808. response: y.value.body,
  1809. status: x
  1810. })
  1811. }
  1812. if (q.length > 0) {
  1813. s(++u, w)
  1814. } else {
  1815. l.status = a.DONE;
  1816. o.trigger("FileUploaded", l, {
  1817. response: y.value.body,
  1818. status: x
  1819. });
  1820. if (x >= 400) {
  1821. debugger;
  1822. o.trigger("Error", {
  1823. code: a.HTTP_ERROR,
  1824. message: a.translate("HTTP Error."),
  1825. file: l,
  1826. status: x
  1827. })
  1828. }
  1829. }
  1830. } else {
  1831. o.trigger("Error", {
  1832. code: a.GENERIC_ERROR,
  1833. message: a.translate("Generic Error."),
  1834. file: l,
  1835. details: y.error
  1836. })
  1837. }
  1838. })
  1839. }
  1840. function r(u) {
  1841. l.size = u.size;
  1842. if (m) {
  1843. e.FileAccess.chunk({
  1844. file: u,
  1845. chunkSize: m
  1846. }, function (x) {
  1847. if (x.success) {
  1848. var y = x.value,
  1849. v = y.length;
  1850. p = Array(v);
  1851. for (var w = 0; w < v; w++) {
  1852. p[w] = 0;
  1853. q.push(y[w])
  1854. }
  1855. s(0, v)
  1856. }
  1857. })
  1858. } else {
  1859. p = Array(1);
  1860. q.push(u);
  1861. s(0, 1)
  1862. }
  1863. }
  1864. if (c && /\.(png|jpg|jpeg)$/i.test(l.name)) {
  1865. BrowserPlus.ImageAlter.transform({
  1866. file: n,
  1867. quality: c.quality || 90,
  1868. actions: [{
  1869. scale: {
  1870. maxwidth: c.width,
  1871. maxheight: c.height
  1872. }
  1873. }]
  1874. }, function (u) {
  1875. if (u.success) {
  1876. r(u.value.file)
  1877. }
  1878. })
  1879. } else {
  1880. r(n)
  1881. }
  1882. });
  1883. j({
  1884. success: true
  1885. })
  1886. }
  1887. if (e) {
  1888. e.init(function (l) {
  1889. var k = [{
  1890. service: "Uploader",
  1891. version: "3"
  1892. }, {
  1893. service: "DragAndDrop",
  1894. version: "1"
  1895. }, {
  1896. service: "FileBrowse",
  1897. version: "1"
  1898. }, {
  1899. service: "FileAccess",
  1900. version: "2"
  1901. }];
  1902. if (c) {
  1903. k.push({
  1904. service: "ImageAlter",
  1905. version: "4"
  1906. })
  1907. }
  1908. if (l.success) {
  1909. e.require({
  1910. services: k
  1911. }, function (m) {
  1912. if (m.success) {
  1913. b()
  1914. } else {
  1915. j()
  1916. }
  1917. })
  1918. } else {
  1919. j()
  1920. }
  1921. })
  1922. } else {
  1923. j()
  1924. }
  1925. }
  1926. })
  1927. })(plupload);
  1928. (function (h, k, j, e) {
  1929. var c = {}, g;
  1930. function m(o, p) {
  1931. var n;
  1932. if ("FileReader" in h) {
  1933. n = new FileReader();
  1934. n.readAsDataURL(o);
  1935. n.onload = function () {
  1936. p(n.result)
  1937. }
  1938. } else {
  1939. return p(o.getAsDataURL())
  1940. }
  1941. }
  1942. function l(o, p) {
  1943. var n;
  1944. if ("FileReader" in h) {
  1945. n = new FileReader();
  1946. n.readAsBinaryString(o);
  1947. n.onload = function () {
  1948. p(n.result)
  1949. }
  1950. } else {
  1951. return p(o.getAsBinary())
  1952. }
  1953. }
  1954. function d(r, p, n, v) {
  1955. var q, o, u, s, t = this;
  1956. m(c[r.id], function (w) {
  1957. q = k.createElement("canvas");
  1958. q.style.display = "none";
  1959. k.body.appendChild(q);
  1960. o = q.getContext("2d");
  1961. u = new Image();
  1962. u.onerror = u.onabort = function () {
  1963. v({
  1964. success: false
  1965. })
  1966. };
  1967. u.onload = function () {
  1968. var C, x, z, y, B;
  1969. if (!p.width) {
  1970. p.width = u.width
  1971. }
  1972. if (!p.height) {
  1973. p.height = u.height
  1974. }
  1975. s = Math.min(p.width / u.width, p.height / u.height);
  1976. if (s < 1) {
  1977. C = Math.round(u.width * s);
  1978. x = Math.round(u.height * s)
  1979. } else {
  1980. if (p.quality && n === "image/jpeg") {
  1981. C = u.width;
  1982. x = u.height
  1983. } else {
  1984. v({
  1985. success: false
  1986. });
  1987. return
  1988. }
  1989. }
  1990. q.width = C;
  1991. q.height = x;
  1992. o.drawImage(u, 0, 0, C, x);
  1993. if (n === "image/jpeg") {
  1994. y = new f(atob(w.substring(w.indexOf("base64,") + 7)));
  1995. if (y.headers && y.headers.length) {
  1996. B = new a();
  1997. if (B.init(y.get("exif")[0])) {
  1998. B.setExif("PixelXDimension", C);
  1999. B.setExif("PixelYDimension", x);
  2000. y.set("exif", B.getBinary());
  2001. if (t.hasEventListener("ExifData")) {
  2002. t.trigger("ExifData", r, B.EXIF())
  2003. }
  2004. if (t.hasEventListener("GpsData")) {
  2005. t.trigger("GpsData", r, B.GPS())
  2006. }
  2007. }
  2008. }
  2009. }
  2010. if (p.quality && n === "image/jpeg") {
  2011. try {
  2012. w = q.toDataURL(n, p.quality / 100)
  2013. } catch (A) {
  2014. w = q.toDataURL(n)
  2015. }
  2016. } else {
  2017. w = q.toDataURL(n)
  2018. }
  2019. w = w.substring(w.indexOf("base64,") + 7);
  2020. w = atob(w);
  2021. if (y && y.headers && y.headers.length) {
  2022. w = y.restore(w);
  2023. y.purge()
  2024. }
  2025. q.parentNode.removeChild(q);
  2026. v({
  2027. success: true,
  2028. data: w
  2029. })
  2030. };
  2031. u.src = w
  2032. })
  2033. }
  2034. j.runtimes.Html5 = j.addRuntime("html5", {
  2035. getFeatures: function () {
  2036. var s, o, r, q, p, n;
  2037. o = r = p = n = false;
  2038. if (h.XMLHttpRequest) {
  2039. s = new XMLHttpRequest();
  2040. r = !!s.upload;
  2041. o = !!(s.sendAsBinary || s.upload)
  2042. }
  2043. if (o) {
  2044. q = !!(s.sendAsBinary || (h.Uint8Array && h.ArrayBuffer));
  2045. p = !!(File && (File.prototype.getAsDataURL || h.FileReader) && q);
  2046. n = !!(File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice))
  2047. }
  2048. g = j.ua.safari && j.ua.windows;
  2049. return {
  2050. html5: o,
  2051. dragdrop: (function () {
  2052. var t = k.createElement("div");
  2053. return ("draggable" in t) || ("ondragstart" in t && "ondrop" in t)
  2054. }()),
  2055. jpgresize: p,
  2056. pngresize: p,
  2057. multipart: p || !!h.FileReader || !!h.FormData,
  2058. canSendBinary: q,
  2059. cantSendBlobInFormData: !!(j.ua.gecko && h.FormData && h.FileReader && !FileReader.prototype.readAsArrayBuffer) || j.ua.android,
  2060. progress: r,
  2061. chunks: n,
  2062. multi_selection: !(j.ua.safari && j.ua.windows),
  2063. triggerDialog: (j.ua.gecko && h.FormData || j.ua.webkit)
  2064. }
  2065. },
  2066. init: function (p, r) {
  2067. var n, q;
  2068. function o(w) {
  2069. var u, t, v = [],
  2070. x, s = {};
  2071. for (t = 0; t < w.length; t++) {
  2072. u = w[t];
  2073. if (s[u.name]) {
  2074. continue
  2075. }
  2076. s[u.name] = true;
  2077. x = j.guid();
  2078. c[x] = u;
  2079. v.push(new j.File(x, u.fileName || u.name, u.fileSize || u.size))
  2080. }
  2081. if (v.length) {
  2082. p.trigger("FilesAdded", v)
  2083. }
  2084. }
  2085. n = this.getFeatures();
  2086. if (!n.html5) {
  2087. r({
  2088. success: false
  2089. });
  2090. return
  2091. }
  2092. p.bind("Init", function (w) {
  2093. var G, F, C = [],
  2094. v, D, t = w.settings.filters,
  2095. u, B, s = k.body,
  2096. E;
  2097. G = k.createElement("div");
  2098. G.id = w.id + "_html5_container";
  2099. j.extend(G.style, {
  2100. position: "absolute",
  2101. background: p.settings.shim_bgcolor || "transparent",
  2102. width: "100px",
  2103. height: "100px",
  2104. overflow: "hidden",
  2105. zIndex: 99999,
  2106. opacity: p.settings.shim_bgcolor ? "" : 0
  2107. });
  2108. G.className = "plupload html5";
  2109. if (p.settings.container) {
  2110. s = k.getElementById(p.settings.container);
  2111. if (j.getStyle(s, "position") === "static") {
  2112. s.style.position = "relative"
  2113. }
  2114. }
  2115. s.appendChild(G);
  2116. no_type_restriction: for (v = 0; v < t.length; v++) {
  2117. u = t[v].extensions.split(/,/);
  2118. for (D = 0; D < u.length; D++) {
  2119. if (u[D] === "*") {
  2120. C = [];
  2121. break no_type_restriction
  2122. }
  2123. B = j.mimeTypes[u[D]];
  2124. if (B && j.inArray(B, C) === -1) {
  2125. C.push(B)
  2126. }
  2127. }
  2128. }
  2129. G.innerHTML = '<input id="' + p.id + '_html5" style="font-size:999px" type="file" accept="' + C.join(",") + '" ' + (p.settings.multi_selection && p.features.multi_selection ? 'multiple="multiple"' : "") + " />";
  2130. G.scrollTop = 100;
  2131. E = k.getElementById(p.id + "_html5");
  2132. if (w.features.triggerDialog) {
  2133. j.extend(E.style, {
  2134. position: "absolute",
  2135. width: "100%",
  2136. height: "100%"
  2137. })
  2138. } else {
  2139. j.extend(E.style, {
  2140. cssFloat: "right",
  2141. styleFloat: "right"
  2142. })
  2143. }
  2144. E.onchange = function () {
  2145. o(this.files);
  2146. this.value = ""
  2147. };
  2148. F = k.getElementById(w.settings.browse_button);
  2149. if (F) {
  2150. var z = w.settings.browse_button_hover,
  2151. A = w.settings.browse_button_active,
  2152. x = w.features.triggerDialog ? F : G;
  2153. if (z) {
  2154. j.addEvent(x, "mouseover", function () {
  2155. j.addClass(F, z)
  2156. }, w.id);
  2157. j.addEvent(x, "mouseout", function () {
  2158. j.removeClass(F, z)
  2159. }, w.id)
  2160. }
  2161. if (A) {
  2162. j.addEvent(x, "mousedown", function () {
  2163. j.addClass(F, A)
  2164. }, w.id);
  2165. j.addEvent(k.body, "mouseup", function () {
  2166. j.removeClass(F, A)
  2167. }, w.id)
  2168. }
  2169. if (w.features.triggerDialog) {
  2170. j.addEvent(F, "click", function (H) {
  2171. var y = k.getElementById(w.id + "_html5");
  2172. if (y && !y.disabled) {
  2173. y.click()
  2174. }
  2175. H.preventDefault()
  2176. }, w.id)
  2177. }
  2178. }
  2179. });
  2180. p.bind("PostInit", function () {
  2181. var s = k.getElementById(p.settings.drop_element);
  2182. if (s) {
  2183. if (g) {
  2184. j.addEvent(s, "dragenter", function (w) {
  2185. var v, t, u;
  2186. v = k.getElementById(p.id + "_drop");
  2187. if (!v) {
  2188. v = k.createElement("input");
  2189. v.setAttribute("type", "file");
  2190. v.setAttribute("id", p.id + "_drop");
  2191. v.setAttribute("multiple", "multiple");
  2192. j.addEvent(v, "change", function () {
  2193. o(this.files);
  2194. j.removeEvent(v, "change", p.id);
  2195. v.parentNode.removeChild(v)
  2196. }, p.id);
  2197. j.addEvent(v, "dragover", function (x) {
  2198. x.stopPropagation()
  2199. }, p.id);
  2200. s.appendChild(v)
  2201. }
  2202. t = j.getPos(s, k.getElementById(p.settings.container));
  2203. u = j.getSize(s);
  2204. if (j.getStyle(s, "position") === "static") {
  2205. j.extend(s.style, {
  2206. position: "relative"
  2207. })
  2208. }
  2209. j.extend(v.style, {
  2210. position: "absolute",
  2211. display: "block",
  2212. top: 0,
  2213. left: 0,
  2214. width: u.w + "px",
  2215. height: u.h + "px",
  2216. opacity: 0
  2217. })
  2218. }, p.id);
  2219. return
  2220. }
  2221. j.addEvent(s, "dragover", function (t) {
  2222. t.preventDefault()
  2223. }, p.id);
  2224. j.addEvent(s, "drop", function (u) {
  2225. var t = u.dataTransfer;
  2226. if (t && t.files) {
  2227. o(t.files)
  2228. }
  2229. u.preventDefault()
  2230. }, p.id)
  2231. }
  2232. });
  2233. p.bind("Refresh", function (s) {
  2234. var t, u, v, x, w;
  2235. t = k.getElementById(p.settings.browse_button);
  2236. if (t) {
  2237. u = j.getPos(t, k.getElementById(s.settings.container));
  2238. v = j.getSize(t);
  2239. x = k.getElementById(p.id + "_html5_container");
  2240. j.extend(x.style, {
  2241. top: u.y + "px",
  2242. left: u.x + "px",
  2243. width: v.w + "px",
  2244. height: v.h + "px"
  2245. });
  2246. if (p.features.triggerDialog) {
  2247. if (j.getStyle(t, "position") === "static") {
  2248. j.extend(t.style, {
  2249. position: "relative"
  2250. })
  2251. }
  2252. w = parseInt(j.getStyle(t, "zIndex"), 10);
  2253. if (isNaN(w)) {
  2254. w = 0
  2255. }
  2256. j.extend(t.style, {
  2257. zIndex: w
  2258. });
  2259. j.extend(x.style, {
  2260. zIndex: w - 1
  2261. })
  2262. }
  2263. }
  2264. });
  2265. p.bind("DisableBrowse", function (s, u) {
  2266. var t = k.getElementById(s.id + "_html5");
  2267. if (t) {
  2268. t.disabled = u
  2269. }
  2270. });
  2271. p.bind("CancelUpload", function () {
  2272. if (q && q.abort) {
  2273. q.abort()
  2274. }
  2275. });
  2276. p.bind("UploadFile", function (s, u) {
  2277. var v = s.settings,
  2278. y, t;
  2279. function x(A, D, z) {
  2280. var B;
  2281. if (File.prototype.slice) {
  2282. try {
  2283. A.slice();
  2284. return A.slice(D, z)
  2285. } catch (C) {
  2286. return A.slice(D, z - D)
  2287. }
  2288. } else {
  2289. if (B = File.prototype.webkitSlice || File.prototype.mozSlice) {
  2290. return B.call(A, D, z)
  2291. } else {
  2292. return null
  2293. }
  2294. }
  2295. }
  2296. function w(A) {
  2297. var D = 0,
  2298. C = 0,
  2299. z = ("FileReader" in h) ? new FileReader : null;
  2300. function B() {
  2301. var J, N, L, M, I, K, F, E = s.settings.url;
  2302. function H(Q) {
  2303. if (q.sendAsBinary) {
  2304. q.sendAsBinary(Q)
  2305. } else {
  2306. if (s.features.canSendBinary) {
  2307. var O = new Uint8Array(Q.length);
  2308. for (var P = 0; P < Q.length; P++) {
  2309. O[P] = (Q.charCodeAt(P) & 255)
  2310. }
  2311. q.send(O.buffer)
  2312. }
  2313. }
  2314. }
  2315. function G(P) {
  2316. var T = 0,
  2317. U = "----pluploadboundary" + j.guid(),
  2318. R, Q = "--",
  2319. S = "\r\n",
  2320. O = "";
  2321. q = new XMLHttpRequest;
  2322. if (q.upload) {
  2323. q.upload.onprogress = function (V) {
  2324. u.loaded = Math.min(u.size, C + V.loaded - T);
  2325. s.trigger("UploadProgress", u)
  2326. }
  2327. }
  2328. q.onreadystatechange = function () {
  2329. var V, X;
  2330. if (q.readyState == 4 && s.state !== j.STOPPED) {
  2331. try {
  2332. V = q.status
  2333. } catch (W) {
  2334. V = 0
  2335. }
  2336. if (V >= 400) {
  2337. var err = "HTTP Error.";
  2338. var xhr = this;
  2339. try {
  2340. var json = xhr.responseText;
  2341. var rpc = JSON.parse(json);
  2342. err = rpc.error.message;
  2343. }
  2344. catch(ex) { }
  2345. s.trigger("Error", {
  2346. code: j.HTTP_ERROR,
  2347. message: j.translate(err),
  2348. file: u,
  2349. status: V
  2350. })
  2351. } else {
  2352. if (L) {
  2353. X = {
  2354. chunk: D,
  2355. chunks: L,
  2356. response: q.responseText,
  2357. status: V
  2358. };
  2359. s.trigger("ChunkUploaded", u, X);
  2360. C += K;
  2361. if (X.cancelled) {
  2362. u.status = j.FAILED;
  2363. return
  2364. }
  2365. u.loaded = Math.min(u.size, (D + 1) * I)
  2366. } else {
  2367. u.loaded = u.size
  2368. }
  2369. s.trigger("UploadProgress", u);
  2370. P = J = R = O = null;
  2371. if (!L || ++D >= L) {
  2372. u.status = j.DONE;
  2373. s.trigger("FileUploaded", u, {
  2374. response: q.responseText,
  2375. status: V
  2376. })
  2377. } else {
  2378. B()
  2379. }
  2380. }
  2381. }
  2382. };
  2383. if (s.settings.multipart && n.multipart) {
  2384. M.name = u.target_name || u.name;
  2385. q.open("post", E, true);
  2386. j.each(s.settings.headers, function (W, V) {
  2387. q.setRequestHeader(V, W)
  2388. });
  2389. if (typeof (P) !== "string" && !!h.FormData) {
  2390. R = new FormData();
  2391. j.each(j.extend(M, s.settings.multipart_params), function (W, V) {
  2392. R.append(V, W)
  2393. });
  2394. R.append(s.settings.file_data_name, P);
  2395. q.send(R);
  2396. return
  2397. }
  2398. if (typeof (P) === "string") {
  2399. q.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + U);
  2400. j.each(j.extend(M, s.settings.multipart_params), function (W, V) {
  2401. O += Q + U + S + 'Content-Disposition: form-data; name="' + V + '"' + S + S;
  2402. O += unescape(encodeURIComponent(W)) + S
  2403. });
  2404. F = j.mimeTypes[u.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream";
  2405. O += Q + U + S + 'Content-Disposition: form-data; name="' + s.settings.file_data_name + '"; filename="' + unescape(encodeURIComponent(u.name)) + '"' + S + "Content-Type: " + F + S + S + P + S + Q + U + Q + S;
  2406. T = O.length - P.length;
  2407. P = O;
  2408. H(P);
  2409. return
  2410. }
  2411. }
  2412. E = j.buildUrl(s.settings.url, j.extend(M, s.settings.multipart_params));
  2413. q.open("post", E, true);
  2414. q.setRequestHeader("Content-Type", "application/octet-stream");
  2415. j.each(s.settings.headers, function (W, V) {
  2416. q.setRequestHeader(V, W)
  2417. });
  2418. if (typeof (P) === "string") {
  2419. H(P)
  2420. } else {
  2421. q.send(P)
  2422. }
  2423. }
  2424. if (u.status == j.DONE || u.status == j.FAILED || s.state == j.STOPPED) {
  2425. return
  2426. }
  2427. M = {
  2428. name: u.target_name || u.name
  2429. };
  2430. if (v.chunk_size && u.size > v.chunk_size && (n.chunks || typeof (A) == "string")) {
  2431. I = v.chunk_size;
  2432. L = Math.ceil(u.size / I);
  2433. K = Math.min(I, u.size - (D * I));
  2434. if (typeof (A) == "string") {
  2435. J = A.substring(D * I, D * I + K)
  2436. } else {
  2437. J = x(A, D * I, D * I + K)
  2438. }
  2439. M.chunk = D;
  2440. M.chunks = L
  2441. } else {
  2442. K = u.size;
  2443. J = A
  2444. }
  2445. if (s.settings.multipart && n.multipart && typeof (J) !== "string" && z && n.cantSendBlobInFormData && n.chunks && s.settings.chunk_size) {
  2446. z.onload = function () {
  2447. G(z.result)
  2448. };
  2449. z.readAsBinaryString(J)
  2450. } else {
  2451. G(J)
  2452. }
  2453. }
  2454. B()
  2455. }
  2456. y = c[u.id];
  2457. if (n.jpgresize && s.settings.resize && /\.(png|jpg|jpeg)$/i.test(u.name)) {
  2458. d.call(s, u, s.settings.resize, /\.png$/i.test(u.name) ? "image/png" : "image/jpeg", function (z) {
  2459. if (z.success) {
  2460. u.size = z.data.length;
  2461. w(z.data)
  2462. } else {
  2463. if (n.chunks) {
  2464. w(y)
  2465. } else {
  2466. l(y, w)
  2467. }
  2468. }
  2469. })
  2470. } else {
  2471. if (!n.chunks && n.jpgresize) {
  2472. l(y, w)
  2473. } else {
  2474. w(y)
  2475. }
  2476. }
  2477. });
  2478. p.bind("Destroy", function (s) {
  2479. var u, v, t = k.body,
  2480. w = {
  2481. inputContainer: s.id + "_html5_container",
  2482. inputFile: s.id + "_html5",
  2483. browseButton: s.settings.browse_button,
  2484. dropElm: s.settings.drop_element
  2485. };
  2486. for (u in w) {
  2487. v = k.getElementById(w[u]);
  2488. if (v) {
  2489. j.removeAllEvents(v, s.id)
  2490. }
  2491. }
  2492. j.removeAllEvents(k.body, s.id);
  2493. if (s.settings.container) {
  2494. t = k.getElementById(s.settings.container)
  2495. }
  2496. t.removeChild(k.getElementById(w.inputContainer))
  2497. });
  2498. r({
  2499. success: true
  2500. })
  2501. }
  2502. });
  2503. function b() {
  2504. var q = false,
  2505. o;
  2506. function r(t, v) {
  2507. var s = q ? 0 : -8 * (v - 1),
  2508. w = 0,
  2509. u;
  2510. for (u = 0; u < v; u++) {
  2511. w |= (o.charCodeAt(t + u) << Math.abs(s + u * 8))
  2512. }
  2513. return w
  2514. }
  2515. function n(u, s, t) {
  2516. var t = arguments.length === 3 ? t : o.length - s - 1;
  2517. o = o.substr(0, s) + u + o.substr(t + s)
  2518. }
  2519. function p(t, u, w) {
  2520. var x = "",
  2521. s = q ? 0 : -8 * (w - 1),
  2522. v;
  2523. for (v = 0; v < w; v++) {
  2524. x += String.fromCharCode((u >> Math.abs(s + v * 8)) & 255)
  2525. }
  2526. n(x, t, w)
  2527. }
  2528. return {
  2529. II: function (s) {
  2530. if (s === e) {
  2531. return q
  2532. } else {
  2533. q = s
  2534. }
  2535. },
  2536. init: function (s) {
  2537. q = false;
  2538. o = s
  2539. },
  2540. SEGMENT: function (s, u, t) {
  2541. switch (arguments.length) {
  2542. case 1:
  2543. return o.substr(s, o.length - s - 1);
  2544. case 2:
  2545. return o.substr(s, u);
  2546. case 3:
  2547. n(t, s, u);
  2548. break;
  2549. default:
  2550. return o
  2551. }
  2552. },
  2553. BYTE: function (s) {
  2554. return r(s, 1)
  2555. },
  2556. SHORT: function (s) {
  2557. return r(s, 2)
  2558. },
  2559. LONG: function (s, t) {
  2560. if (t === e) {
  2561. return r(s, 4)
  2562. } else {
  2563. p(s, t, 4)
  2564. }
  2565. },
  2566. SLONG: function (s) {
  2567. var t = r(s, 4);
  2568. return (t > 2147483647 ? t - 4294967296 : t)
  2569. },
  2570. STRING: function (s, t) {
  2571. var u = "";
  2572. for (t += s; s < t; s++) {
  2573. u += String.fromCharCode(r(s, 1))
  2574. }
  2575. return u
  2576. }
  2577. }
  2578. }
  2579. function f(s) {
  2580. var u = {
  2581. 65505: {
  2582. app: "EXIF",
  2583. name: "APP1",
  2584. signature: "Exif\0"
  2585. },
  2586. 65506: {
  2587. app: "ICC",
  2588. name: "APP2",
  2589. signature: "ICC_PROFILE\0"
  2590. },
  2591. 65517: {
  2592. app: "IPTC",
  2593. name: "APP13",
  2594. signature: "Photoshop 3.0\0"
  2595. }
  2596. }, t = [],
  2597. r, n, p = e,
  2598. q = 0,
  2599. o;
  2600. r = new b();
  2601. r.init(s);
  2602. if (r.SHORT(0) !== 65496) {
  2603. return
  2604. }
  2605. n = 2;
  2606. o = Math.min(1048576, s.length);
  2607. while (n <= o) {
  2608. p = r.SHORT(n);
  2609. if (p >= 65488 && p <= 65495) {
  2610. n += 2;
  2611. continue
  2612. }
  2613. if (p === 65498 || p === 65497) {
  2614. break
  2615. }
  2616. q = r.SHORT(n + 2) + 2;
  2617. if (u[p] && r.STRING(n + 4, u[p].signature.length) === u[p].signature) {
  2618. t.push({
  2619. hex: p,
  2620. app: u[p].app.toUpperCase(),
  2621. name: u[p].name.toUpperCase(),
  2622. start: n,
  2623. length: q,
  2624. segment: r.SEGMENT(n, q)
  2625. })
  2626. }
  2627. n += q
  2628. }
  2629. r.init(null);
  2630. return {
  2631. headers: t,
  2632. restore: function (y) {
  2633. r.init(y);
  2634. var w = new f(y);
  2635. if (!w.headers) {
  2636. return false
  2637. }
  2638. for (var x = w.headers.length; x > 0; x--) {
  2639. var z = w.headers[x - 1];
  2640. r.SEGMENT(z.start, z.length, "")
  2641. }
  2642. w.purge();
  2643. n = r.SHORT(2) == 65504 ? 4 + r.SHORT(4) : 2;
  2644. for (var x = 0, v = t.length; x < v; x++) {
  2645. r.SEGMENT(n, 0, t[x].segment);
  2646. n += t[x].length
  2647. }
  2648. return r.SEGMENT()
  2649. },
  2650. get: function (x) {
  2651. var y = [];
  2652. for (var w = 0, v = t.length; w < v; w++) {
  2653. if (t[w].app === x.toUpperCase()) {
  2654. y.push(t[w].segment)
  2655. }
  2656. }
  2657. return y
  2658. },
  2659. set: function (y, x) {
  2660. var z = [];
  2661. if (typeof (x) === "string") {
  2662. z.push(x)
  2663. } else {
  2664. z = x
  2665. }
  2666. for (var w = ii = 0, v = t.length; w < v; w++) {
  2667. if (t[w].app === y.toUpperCase()) {
  2668. t[w].segment = z[ii];
  2669. t[w].length = z[ii].length;
  2670. ii++
  2671. }
  2672. if (ii >= z.length) {
  2673. break
  2674. }
  2675. }
  2676. },
  2677. purge: function () {
  2678. t = [];
  2679. r.init(null)
  2680. }
  2681. }
  2682. }
  2683. function a() {
  2684. var q, n, o = {}, t;
  2685. q = new b();
  2686. n = {
  2687. tiff: {
  2688. 274: "Orientation",
  2689. 34665: "ExifIFDPointer",
  2690. 34853: "GPSInfoIFDPointer"
  2691. },
  2692. exif: {
  2693. 36864: "ExifVersion",
  2694. 40961: "ColorSpace",
  2695. 40962: "PixelXDimension",
  2696. 40963: "PixelYDimension",
  2697. 36867: "DateTimeOriginal",
  2698. 33434: "ExposureTime",
  2699. 33437: "FNumber",
  2700. 34855: "ISOSpeedRatings",
  2701. 37377: "ShutterSpeedValue",
  2702. 37378: "ApertureValue",
  2703. 37383: "MeteringMode",
  2704. 37384: "LightSource",
  2705. 37385: "Flash",
  2706. 41986: "ExposureMode",
  2707. 41987: "WhiteBalance",
  2708. 41990: "SceneCaptureType",
  2709. 41988: "DigitalZoomRatio",
  2710. 41992: "Contrast",
  2711. 41993: "Saturation",
  2712. 41994: "Sharpness"
  2713. },
  2714. gps: {
  2715. 0: "GPSVersionID",
  2716. 1: "GPSLatitudeRef",
  2717. 2: "GPSLatitude",
  2718. 3: "GPSLongitudeRef",
  2719. 4: "GPSLongitude"
  2720. }
  2721. };
  2722. t = {
  2723. ColorSpace: {
  2724. 1: "sRGB",
  2725. 0: "Uncalibrated"
  2726. },
  2727. MeteringMode: {
  2728. 0: "Unknown",
  2729. 1: "Average",
  2730. 2: "CenterWeightedAverage",
  2731. 3: "Spot",
  2732. 4: "MultiSpot",
  2733. 5: "Pattern",
  2734. 6: "Partial",
  2735. 255: "Other"
  2736. },
  2737. LightSource: {
  2738. 1: "Daylight",
  2739. 2: "Fliorescent",
  2740. 3: "Tungsten",
  2741. 4: "Flash",
  2742. 9: "Fine weather",
  2743. 10: "Cloudy weather",
  2744. 11: "Shade",
  2745. 12: "Daylight fluorescent (D 5700 - 7100K)",
  2746. 13: "Day white fluorescent (N 4600 -5400K)",
  2747. 14: "Cool white fluorescent (W 3900 - 4500K)",
  2748. 15: "White fluorescent (WW 3200 - 3700K)",
  2749. 17: "Standard light A",
  2750. 18: "Standard light B",
  2751. 19: "Standard light C",
  2752. 20: "D55",
  2753. 21: "D65",
  2754. 22: "D75",
  2755. 23: "D50",
  2756. 24: "ISO studio tungsten",
  2757. 255: "Other"
  2758. },
  2759. Flash: {
  2760. 0: "Flash did not fire.",
  2761. 1: "Flash fired.",
  2762. 5: "Strobe return light not detected.",
  2763. 7: "Strobe return light detected.",
  2764. 9: "Flash fired, compulsory flash mode",
  2765. 13: "Flash fired, compulsory flash mode, return light not detected",
  2766. 15: "Flash fired, compulsory flash mode, return light detected",
  2767. 16: "Flash did not fire, compulsory flash mode",
  2768. 24: "Flash did not fire, auto mode",
  2769. 25: "Flash fired, auto mode",
  2770. 29: "Flash fired, auto mode, return light not detected",
  2771. 31: "Flash fired, auto mode, return light detected",
  2772. 32: "No flash function",
  2773. 65: "Flash fired, red-eye reduction mode",
  2774. 69: "Flash fired, red-eye reduction mode, return light not detected",
  2775. 71: "Flash fired, red-eye reduction mode, return light detected",
  2776. 73: "Flash fired, compulsory flash mode, red-eye reduction mode",
  2777. 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
  2778. 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
  2779. 89: "Flash fired, auto mode, red-eye reduction mode",
  2780. 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
  2781. 95: "Flash fired, auto mode, return light detected, red-eye reduction mode"
  2782. },
  2783. ExposureMode: {
  2784. 0: "Auto exposure",
  2785. 1: "Manual exposure",
  2786. 2: "Auto bracket"
  2787. },
  2788. WhiteBalance: {
  2789. 0: "Auto white balance",
  2790. 1: "Manual white balance"
  2791. },
  2792. SceneCaptureType: {
  2793. 0: "Standard",
  2794. 1: "Landscape",
  2795. 2: "Portrait",
  2796. 3: "Night scene"
  2797. },
  2798. Contrast: {
  2799. 0: "Normal",
  2800. 1: "Soft",
  2801. 2: "Hard"
  2802. },
  2803. Saturation: {
  2804. 0: "Normal",
  2805. 1: "Low saturation",
  2806. 2: "High saturation"
  2807. },
  2808. Sharpness: {
  2809. 0: "Normal",
  2810. 1: "Soft",
  2811. 2: "Hard"
  2812. },
  2813. GPSLatitudeRef: {
  2814. N: "North latitude",
  2815. S: "South latitude"
  2816. },
  2817. GPSLongitudeRef: {
  2818. E: "East longitude",
  2819. W: "West longitude"
  2820. }
  2821. };
  2822. function p(u, C) {
  2823. var w = q.SHORT(u),
  2824. z, F, G, B, A, v, x, D, E = [],
  2825. y = {};
  2826. for (z = 0; z < w; z++) {
  2827. x = v = u + 12 * z + 2;
  2828. G = C[q.SHORT(x)];
  2829. if (G === e) {
  2830. continue
  2831. }
  2832. B = q.SHORT(x += 2);
  2833. A = q.LONG(x += 2);
  2834. x += 4;
  2835. E = [];
  2836. switch (B) {
  2837. case 1:
  2838. case 7:
  2839. if (A > 4) {
  2840. x = q.LONG(x) + o.tiffHeader
  2841. }
  2842. for (F = 0; F < A; F++) {
  2843. E[F] = q.BYTE(x + F)
  2844. }
  2845. break;
  2846. case 2:
  2847. if (A > 4) {
  2848. x = q.LONG(x) + o.tiffHeader
  2849. }
  2850. y[G] = q.STRING(x, A - 1);
  2851. continue;
  2852. case 3:
  2853. if (A > 2) {
  2854. x = q.LONG(x) + o.tiffHeader
  2855. }
  2856. for (F = 0; F < A; F++) {
  2857. E[F] = q.SHORT(x + F * 2)
  2858. }
  2859. break;
  2860. case 4:
  2861. if (A > 1) {
  2862. x = q.LONG(x) + o.tiffHeader
  2863. }
  2864. for (F = 0; F < A; F++) {
  2865. E[F] = q.LONG(x + F * 4)
  2866. }
  2867. break;
  2868. case 5:
  2869. x = q.LONG(x) + o.tiffHeader;
  2870. for (F = 0; F < A; F++) {
  2871. E[F] = q.LONG(x + F * 4) / q.LONG(x + F * 4 + 4)
  2872. }
  2873. break;
  2874. case 9:
  2875. x = q.LONG(x) + o.tiffHeader;
  2876. for (F = 0; F < A; F++) {
  2877. E[F] = q.SLONG(x + F * 4)
  2878. }
  2879. break;
  2880. case 10:
  2881. x = q.LONG(x) + o.tiffHeader;
  2882. for (F = 0; F < A; F++) {
  2883. E[F] = q.SLONG(x + F * 4) / q.SLONG(x + F * 4 + 4)
  2884. }
  2885. break;
  2886. default:
  2887. continue
  2888. }
  2889. D = (A == 1 ? E[0] : E);
  2890. if (t.hasOwnProperty(G) && typeof D != "object") {
  2891. y[G] = t[G][D]
  2892. } else {
  2893. y[G] = D
  2894. }
  2895. }
  2896. return y
  2897. }
  2898. function s() {
  2899. var v = e,
  2900. u = o.tiffHeader;
  2901. q.II(q.SHORT(u) == 18761);
  2902. if (q.SHORT(u += 2) !== 42) {
  2903. return false
  2904. }
  2905. o.IFD0 = o.tiffHeader + q.LONG(u += 2);
  2906. v = p(o.IFD0, n.tiff);
  2907. o.exifIFD = ("ExifIFDPointer" in v ? o.tiffHeader + v.ExifIFDPointer : e);
  2908. o.gpsIFD = ("GPSInfoIFDPointer" in v ? o.tiffHeader + v.GPSInfoIFDPointer : e);
  2909. return true
  2910. }
  2911. function r(w, u, z) {
  2912. var B, y, x, A = 0;
  2913. if (typeof (u) === "string") {
  2914. var v = n[w.toLowerCase()];
  2915. for (hex in v) {
  2916. if (v[hex] === u) {
  2917. u = hex;
  2918. break
  2919. }
  2920. }
  2921. }
  2922. B = o[w.toLowerCase() + "IFD"];
  2923. y = q.SHORT(B);
  2924. for (i = 0; i < y; i++) {
  2925. x = B + 12 * i + 2;
  2926. if (q.SHORT(x) == u) {
  2927. A = x + 8;
  2928. break
  2929. }
  2930. }
  2931. if (!A) {
  2932. return false
  2933. }
  2934. q.LONG(A, z);
  2935. return true
  2936. }
  2937. return {
  2938. init: function (u) {
  2939. o = {
  2940. tiffHeader: 10
  2941. };
  2942. if (u === e || !u.length) {
  2943. return false
  2944. }
  2945. q.init(u);
  2946. if (q.SHORT(0) === 65505 && q.STRING(4, 5).toUpperCase() === "EXIF\0") {
  2947. return s()
  2948. }
  2949. return false
  2950. },
  2951. EXIF: function () {
  2952. var v;
  2953. v = p(o.exifIFD, n.exif);
  2954. if (v.ExifVersion && j.typeOf(v.ExifVersion) === "array") {
  2955. for (var w = 0, u = ""; w < v.ExifVersion.length; w++) {
  2956. u += String.fromCharCode(v.ExifVersion[w])
  2957. }
  2958. v.ExifVersion = u
  2959. }
  2960. return v
  2961. },
  2962. GPS: function () {
  2963. var u;
  2964. u = p(o.gpsIFD, n.gps);
  2965. if (u.GPSVersionID) {
  2966. u.GPSVersionID = u.GPSVersionID.join(".")
  2967. }
  2968. return u
  2969. },
  2970. setExif: function (u, v) {
  2971. if (u !== "PixelXDimension" && u !== "PixelYDimension") {
  2972. return false
  2973. }
  2974. return r("exif", u, v)
  2975. },
  2976. getBinary: function () {
  2977. return q.SEGMENT()
  2978. }
  2979. }
  2980. }
  2981. })(window, document, plupload);
  2982. (function (d, a, b, c) {
  2983. function e(f) {
  2984. return a.getElementById(f)
  2985. }
  2986. b.runtimes.Html4 = b.addRuntime("html4", {
  2987. getFeatures: function () {
  2988. return {
  2989. multipart: true,
  2990. triggerDialog: (b.ua.gecko && d.FormData || b.ua.webkit)
  2991. }
  2992. },
  2993. init: function (f, g) {
  2994. f.bind("Init", function (p) {
  2995. var j = a.body,
  2996. n, h = "javascript",
  2997. k, x, q, z = [],
  2998. r = /MSIE/.test(navigator.userAgent),
  2999. t = [],
  3000. m = p.settings.filters,
  3001. o, l, s, w;
  3002. no_type_restriction: for (o = 0; o < m.length; o++) {
  3003. l = m[o].extensions.split(/,/);
  3004. for (w = 0; w < l.length; w++) {
  3005. if (l[w] === "*") {
  3006. t = [];
  3007. break no_type_restriction
  3008. }
  3009. s = b.mimeTypes[l[w]];
  3010. if (s && b.inArray(s, t) === -1) {
  3011. t.push(s)
  3012. }
  3013. }
  3014. }
  3015. t = t.join(",");
  3016. function v() {
  3017. var C, A, y, B;
  3018. q = b.guid();
  3019. z.push(q);
  3020. C = a.createElement("form");
  3021. C.setAttribute("id", "form_" + q);
  3022. C.setAttribute("method", "post");
  3023. C.setAttribute("enctype", "multipart/form-data");
  3024. C.setAttribute("encoding", "multipart/form-data");
  3025. C.setAttribute("target", p.id + "_iframe");
  3026. C.style.position = "absolute";
  3027. A = a.createElement("input");
  3028. A.setAttribute("id", "input_" + q);
  3029. A.setAttribute("type", "file");
  3030. A.setAttribute("accept", t);
  3031. A.setAttribute("size", 1);
  3032. B = e(p.settings.browse_button);
  3033. if (p.features.triggerDialog && B) {
  3034. b.addEvent(e(p.settings.browse_button), "click", function (D) {
  3035. if (!A.disabled) {
  3036. A.click()
  3037. }
  3038. D.preventDefault()
  3039. }, p.id)
  3040. }
  3041. b.extend(A.style, {
  3042. width: "100%",
  3043. height: "100%",
  3044. opacity: 0,
  3045. fontSize: "99px",
  3046. cursor: "pointer"
  3047. });
  3048. b.extend(C.style, {
  3049. overflow: "hidden"
  3050. });
  3051. y = p.settings.shim_bgcolor;
  3052. if (y) {
  3053. C.style.background = y
  3054. }
  3055. if (r) {
  3056. b.extend(A.style, {
  3057. filter: "alpha(opacity=0)"
  3058. })
  3059. }
  3060. b.addEvent(A, "change", function (G) {
  3061. var E = G.target,
  3062. D, F = [],
  3063. H;
  3064. if (E.value) {
  3065. e("form_" + q).style.top = -1048575 + "px";
  3066. D = E.value.replace(/\\/g, "/");
  3067. D = D.substring(D.length, D.lastIndexOf("/") + 1);
  3068. F.push(new b.File(q, D));
  3069. if (!p.features.triggerDialog) {
  3070. b.removeAllEvents(C, p.id)
  3071. } else {
  3072. b.removeEvent(B, "click", p.id)
  3073. }
  3074. b.removeEvent(A, "change", p.id);
  3075. v();
  3076. if (F.length) {
  3077. f.trigger("FilesAdded", F)
  3078. }
  3079. }
  3080. }, p.id);
  3081. C.appendChild(A);
  3082. j.appendChild(C);
  3083. p.refresh()
  3084. }
  3085. function u() {
  3086. var y = a.createElement("div");
  3087. y.innerHTML = '<iframe id="' + p.id + '_iframe" name="' + p.id + '_iframe" src="' + h + ':&quot;&quot;" style="display:none"></iframe>';
  3088. n = y.firstChild;
  3089. j.appendChild(n);
  3090. b.addEvent(n, "load", function (D) {
  3091. var E = D.target,
  3092. C, A;
  3093. if (!k) {
  3094. return
  3095. }
  3096. try {
  3097. C = E.contentWindow.document || E.contentDocument || d.frames[E.id].document
  3098. } catch (B) {
  3099. p.trigger("Error", {
  3100. code: b.SECURITY_ERROR,
  3101. message: b.translate("Security error."),
  3102. file: k
  3103. });
  3104. return
  3105. }
  3106. A = C.documentElement.innerText || C.documentElement.textContent;
  3107. if (A) {
  3108. k.status = b.DONE;
  3109. k.loaded = 1025;
  3110. k.percent = 100;
  3111. p.trigger("UploadProgress", k);
  3112. p.trigger("FileUploaded", k, {
  3113. response: A
  3114. })
  3115. }
  3116. }, p.id)
  3117. }
  3118. if (p.settings.container) {
  3119. j = e(p.settings.container);
  3120. if (b.getStyle(j, "position") === "static") {
  3121. j.style.position = "relative"
  3122. }
  3123. }
  3124. p.bind("UploadFile", function (y, B) {
  3125. var C, A;
  3126. if (B.status == b.DONE || B.status == b.FAILED || y.state == b.STOPPED) {
  3127. return
  3128. }
  3129. C = e("form_" + B.id);
  3130. A = e("input_" + B.id);
  3131. A.setAttribute("name", y.settings.file_data_name);
  3132. C.setAttribute("action", y.settings.url);
  3133. b.each(b.extend({
  3134. name: B.target_name || B.name
  3135. }, y.settings.multipart_params), function (F, D) {
  3136. var E = a.createElement("input");
  3137. b.extend(E, {
  3138. type: "hidden",
  3139. name: D,
  3140. value: F
  3141. });
  3142. C.insertBefore(E, C.firstChild)
  3143. });
  3144. k = B;
  3145. e("form_" + q).style.top = -1048575 + "px";
  3146. C.submit()
  3147. });
  3148. p.bind("FileUploaded", function (y) {
  3149. y.refresh()
  3150. });
  3151. p.bind("StateChanged", function (y) {
  3152. if (y.state == b.STARTED) {
  3153. u()
  3154. } else {
  3155. if (y.state == b.STOPPED) {
  3156. d.setTimeout(function () {
  3157. b.removeEvent(n, "load", y.id);
  3158. if (n.parentNode) {
  3159. n.parentNode.removeChild(n)
  3160. }
  3161. }, 0)
  3162. }
  3163. }
  3164. b.each(y.files, function (B, A) {
  3165. if (B.status === b.DONE || B.status === b.FAILED) {
  3166. var C = e("form_" + B.id);
  3167. if (C) {
  3168. C.parentNode.removeChild(C)
  3169. }
  3170. }
  3171. })
  3172. });
  3173. p.bind("Refresh", function (A) {
  3174. var G, B, C, D, y, H, I, F, E;
  3175. G = e(A.settings.browse_button);
  3176. if (G) {
  3177. y = b.getPos(G, e(A.settings.container));
  3178. H = b.getSize(G);
  3179. I = e("form_" + q);
  3180. F = e("input_" + q);
  3181. b.extend(I.style, {
  3182. top: y.y + "px",
  3183. left: y.x + "px",
  3184. width: H.w + "px",
  3185. height: H.h + "px"
  3186. });
  3187. if (A.features.triggerDialog) {
  3188. if (b.getStyle(G, "position") === "static") {
  3189. b.extend(G.style, {
  3190. position: "relative"
  3191. })
  3192. }
  3193. E = parseInt(G.style.zIndex, 10);
  3194. if (isNaN(E)) {
  3195. E = 0
  3196. }
  3197. b.extend(G.style, {
  3198. zIndex: E
  3199. });
  3200. b.extend(I.style, {
  3201. zIndex: E - 1
  3202. })
  3203. }
  3204. C = A.settings.browse_button_hover;
  3205. D = A.settings.browse_button_active;
  3206. B = A.features.triggerDialog ? G : I;
  3207. if (C) {
  3208. b.addEvent(B, "mouseover", function () {
  3209. b.addClass(G, C)
  3210. }, A.id);
  3211. b.addEvent(B, "mouseout", function () {
  3212. b.removeClass(G, C)
  3213. }, A.id)
  3214. }
  3215. if (D) {
  3216. b.addEvent(B, "mousedown", function () {
  3217. b.addClass(G, D)
  3218. }, A.id);
  3219. b.addEvent(a.body, "mouseup", function () {
  3220. b.removeClass(G, D)
  3221. }, A.id)
  3222. }
  3223. }
  3224. });
  3225. f.bind("FilesRemoved", function (y, B) {
  3226. var A, C;
  3227. for (A = 0; A < B.length; A++) {
  3228. C = e("form_" + B[A].id);
  3229. if (C) {
  3230. C.parentNode.removeChild(C)
  3231. }
  3232. }
  3233. });
  3234. f.bind("DisableBrowse", function (y, B) {
  3235. var A = a.getElementById("input_" + q);
  3236. if (A) {
  3237. A.disabled = B
  3238. }
  3239. });
  3240. f.bind("Destroy", function (y) {
  3241. var A, B, C, D = {
  3242. inputContainer: "form_" + q,
  3243. inputFile: "input_" + q,
  3244. browseButton: y.settings.browse_button
  3245. };
  3246. for (A in D) {
  3247. B = e(D[A]);
  3248. if (B) {
  3249. b.removeAllEvents(B, y.id)
  3250. }
  3251. }
  3252. b.removeAllEvents(a.body, y.id);
  3253. b.each(z, function (F, E) {
  3254. C = e("form_" + F);
  3255. if (C) {
  3256. C.parentNode.removeChild(C)
  3257. }
  3258. })
  3259. });
  3260. v()
  3261. });
  3262. g({
  3263. success: true
  3264. })
  3265. }
  3266. })
  3267. })(window, document, plupload);