/jandcode-wax-core/src/jandcode/wax/core/js/jquery/plupload/plupload.html5.js
JavaScript | 765 lines | 743 code | 22 blank | 0 comment | 206 complexity | 15805084fe0ea9c8ffa26741cc65056e MD5 | raw file
- (function(h, k, j, e) {
- var c = {}, g;
-
- function m(o, p) {
- var n;
- if ("FileReader" in h) {
- n = new FileReader();
- n.readAsDataURL(o);
- n.onload = function() {
- p(n.result)
- }
- } else {
- return p(o.getAsDataURL())
- }
- }
-
- function l(o, p) {
- var n;
- if ("FileReader" in h) {
- n = new FileReader();
- n.readAsBinaryString(o);
- n.onload = function() {
- p(n.result)
- }
- } else {
- return p(o.getAsBinary())
- }
- }
-
- function d(r, p, n, v) {
- var q, o, u, s, t = this;
- m(c[r.id], function(w) {
- q = k.createElement("canvas");
- q.style.display = "none";
- k.body.appendChild(q);
- o = q.getContext("2d");
- u = new Image();
- u.onerror = u.onabort = function() {
- v({success: false})
- };
- u.onload = function() {
- var B, x, z, y, A;
- if (!p.width) {
- p.width = u.width
- }
- if (!p.height) {
- p.height = u.height
- }
- s = Math.min(p.width / u.width, p.height / u.height);
- if (s < 1 || (s === 1 && n === "image/jpeg")) {
- B = Math.round(u.width * s);
- x = Math.round(u.height * s);
- q.width = B;
- q.height = x;
- o.drawImage(u, 0, 0, B, x);
- if (n === "image/jpeg") {
- y = new f(atob(w.substring(w.indexOf("base64,") + 7)));
- if (y.headers && y.headers.length) {
- A = new a();
- if (A.init(y.get("exif")[0])) {
- A.setExif("PixelXDimension", B);
- A.setExif("PixelYDimension", x);
- y.set("exif", A.getBinary());
- if (t.hasEventListener("ExifData")) {
- t.trigger("ExifData", r, A.EXIF())
- }
- if (t.hasEventListener("GpsData")) {
- t.trigger("GpsData", r, A.GPS())
- }
- }
- }
- if (p.quality) {
- try {
- w = q.toDataURL(n, p.quality / 100)
- } catch(C) {
- w = q.toDataURL(n)
- }
- }
- } else {
- w = q.toDataURL(n)
- }
- w = w.substring(w.indexOf("base64,") + 7);
- w = atob(w);
- if (y && y.headers && y.headers.length) {
- w = y.restore(w);
- y.purge()
- }
- q.parentNode.removeChild(q);
- v({success: true, data: w})
- } else {
- v({success: false})
- }
- };
- u.src = w
- })
- }
-
- j.runtimes.Html5 = j.addRuntime("html5", {getFeatures: function() {
- var s, o, r, q, p, n;
- o = r = p = n = false;
- if (h.XMLHttpRequest) {
- s = new XMLHttpRequest();
- r = !!s.upload;
- o = !!(s.sendAsBinary || s.upload)
- }
- if (o) {
- q = !!(s.sendAsBinary || (h.Uint8Array && h.ArrayBuffer));
- p = !!(File && (File.prototype.getAsDataURL || h.FileReader) && q);
- n = !!(File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice))
- }
- g = j.ua.safari && j.ua.windows;
- return{html5: o, dragdrop: (function() {
- var t = k.createElement("div");
- return("draggable" in t) || ("ondragstart" in t && "ondrop" in t)
- }()), jpgresize: p, pngresize: p, multipart: p || !!h.FileReader || !!h.FormData, canSendBinary: q, cantSendBlobInFormData: !!(j.ua.gecko && h.FormData && h.FileReader && !FileReader.prototype.readAsArrayBuffer), progress: r, chunks: n, multi_selection: !(j.ua.safari && j.ua.windows), triggerDialog: (j.ua.gecko && h.FormData || j.ua.webkit)}
- }, init: function(p, r) {
- var n, q;
-
- function o(w) {
- var u, t, v = [], x, s = {};
- for (t = 0; t < w.length; t++) {
- u = w[t];
- if (s[u.name]) {
- continue
- }
- s[u.name] = true;
- x = j.guid();
- c[x] = u;
- v.push(new j.File(x, u.fileName || u.name, u.fileSize || u.size))
- }
- if (v.length) {
- p.trigger("FilesAdded", v)
- }
- }
-
- n = this.getFeatures();
- if (!n.html5) {
- r({success: false});
- return
- }
- p.bind("Init", function(w) {
- var G, F, C = [], v, D, t = w.settings.filters, u, B, s = k.body, E;
- G = k.createElement("div");
- G.id = w.id + "_html5_container";
- j.extend(G.style, {position: "absolute", background: p.settings.shim_bgcolor || "transparent", width: "100px", height: "100px", overflow: "hidden", zIndex: 99999, opacity: p.settings.shim_bgcolor ? "" : 0});
- G.className = "plupload html5";
- if (p.settings.container) {
- s = k.getElementById(p.settings.container);
- if (j.getStyle(s, "position") === "static") {
- s.style.position = "relative"
- }
- }
- s.appendChild(G);
- no_type_restriction:for (v = 0; v < t.length; v++) {
- u = t[v].extensions.split(/,/);
- for (D = 0; D < u.length; D++) {
- if (u[D] === "*") {
- C = [];
- break no_type_restriction
- }
- B = j.mimeTypes[u[D]];
- if (B && j.inArray(B, C) === -1) {
- C.push(B)
- }
- }
- }
- 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"' : "") + " />";
- G.scrollTop = 100;
- E = k.getElementById(p.id + "_html5");
- if (w.features.triggerDialog) {
- j.extend(E.style, {position: "absolute", width: "100%", height: "100%"})
- } else {
- j.extend(E.style, {cssFloat: "right", styleFloat: "right"})
- }
- E.onchange = function() {
- o(this.files);
- this.value = ""
- };
- F = k.getElementById(w.settings.browse_button);
- if (F) {
- var z = w.settings.browse_button_hover, A = w.settings.browse_button_active, x = w.features.triggerDialog ? F : G;
- if (z) {
- j.addEvent(x, "mouseover", function() {
- j.addClass(F, z)
- }, w.id);
- j.addEvent(x, "mouseout", function() {
- j.removeClass(F, z)
- }, w.id)
- }
- if (A) {
- j.addEvent(x, "mousedown", function() {
- j.addClass(F, A)
- }, w.id);
- j.addEvent(k.body, "mouseup", function() {
- j.removeClass(F, A)
- }, w.id)
- }
- if (w.features.triggerDialog) {
- j.addEvent(F, "click", function(H) {
- var y = k.getElementById(w.id + "_html5");
- if (y && !y.disabled) {
- y.click()
- }
- H.preventDefault()
- }, w.id)
- }
- }
- });
- p.bind("PostInit", function() {
- var s = k.getElementById(p.settings.drop_element);
- if (s) {
- if (g) {
- j.addEvent(s, "dragenter", function(w) {
- var v, t, u;
- v = k.getElementById(p.id + "_drop");
- if (!v) {
- v = k.createElement("input");
- v.setAttribute("type", "file");
- v.setAttribute("id", p.id + "_drop");
- v.setAttribute("multiple", "multiple");
- j.addEvent(v, "change", function() {
- o(this.files);
- j.removeEvent(v, "change", p.id);
- v.parentNode.removeChild(v)
- }, p.id);
- s.appendChild(v)
- }
- t = j.getPos(s, k.getElementById(p.settings.container));
- u = j.getSize(s);
- if (j.getStyle(s, "position") === "static") {
- j.extend(s.style, {position: "relative"})
- }
- j.extend(v.style, {position: "absolute", display: "block", top: 0, left: 0, width: u.w + "px", height: u.h + "px", opacity: 0})
- }, p.id);
- return
- }
- j.addEvent(s, "dragover", function(t) {
- t.preventDefault()
- }, p.id);
- j.addEvent(s, "drop", function(u) {
- var t = u.dataTransfer;
- if (t && t.files) {
- o(t.files)
- }
- u.preventDefault()
- }, p.id)
- }
- });
- p.bind("Refresh", function(s) {
- var t, u, v, x, w;
- t = k.getElementById(p.settings.browse_button);
- if (t) {
- u = j.getPos(t, k.getElementById(s.settings.container));
- v = j.getSize(t);
- x = k.getElementById(p.id + "_html5_container");
- j.extend(x.style, {top: u.y + "px", left: u.x + "px", width: v.w + "px", height: v.h + "px"});
- if (p.features.triggerDialog) {
- if (j.getStyle(t, "position") === "static") {
- j.extend(t.style, {position: "relative"})
- }
- w = parseInt(j.getStyle(t, "z-index"), 10);
- if (isNaN(w)) {
- w = 0
- }
- j.extend(t.style, {zIndex: w});
- j.extend(x.style, {zIndex: w - 1})
- }
- }
- });
- p.bind("DisableBrowse", function(s, u) {
- var t = k.getElementById(s.id + "_html5");
- if (t) {
- t.disabled = u
- }
- });
- p.bind("CancelUpload", function() {
- if (q && q.abort) {
- q.abort()
- }
- });
- p.bind("UploadFile", function(s, u) {
- var v = s.settings, y, t;
-
- function x(A, D, z) {
- var B;
- if (File.prototype.slice) {
- try {
- A.slice();
- return A.slice(D, z)
- } catch(C) {
- return A.slice(D, z - D)
- }
- } else {
- if (B = File.prototype.webkitSlice || File.prototype.mozSlice) {
- return B.call(A, D, z)
- } else {
- return null
- }
- }
- }
-
- function w(A) {
- var D = 0, C = 0, z = ("FileReader" in h) ? new FileReader : null;
-
- function B() {
- var I, M, K, L, H, J, F, E = s.settings.url;
-
- function G(V) {
- var T = 0, N = "----pluploadboundary" + j.guid(), O, P = "--", U = "\r\n", R = "";
- q = new XMLHttpRequest;
- if (q.upload) {
- q.upload.onprogress = function(W) {
- u.loaded = Math.min(u.size, C + W.loaded - T);
- s.trigger("UploadProgress", u)
- }
- }
- q.onreadystatechange = function() {
- var W, Y;
- if (q.readyState == 4 && s.state !== j.STOPPED) {
- try {
- W = q.status
- } catch(X) {
- W = 0
- }
- if (W >= 400) {
- s.trigger("Error", {code: j.HTTP_ERROR, message: j.translate("HTTP Error."), file: u, status: W})
- } else {
- if (K) {
- Y = {chunk: D, chunks: K, response: q.responseText, status: W};
- s.trigger("ChunkUploaded", u, Y);
- C += J;
- if (Y.cancelled) {
- u.status = j.FAILED;
- return
- }
- u.loaded = Math.min(u.size, (D + 1) * H)
- } else {
- u.loaded = u.size
- }
- s.trigger("UploadProgress", u);
- V = I = O = R = null;
- if (!K || ++D >= K) {
- u.status = j.DONE;
- s.trigger("FileUploaded", u, {response: q.responseText, status: W})
- } else {
- B()
- }
- }
- }
- };
- if (s.settings.multipart && n.multipart) {
- L.name = u.target_name || u.name;
- q.open("post", E, true);
- j.each(s.settings.headers, function(X, W) {
- q.setRequestHeader(W, X)
- });
- if (typeof(V) !== "string" && !!h.FormData) {
- O = new FormData();
- j.each(j.extend(L, s.settings.multipart_params), function(X, W) {
- O.append(W, X)
- });
- O.append(s.settings.file_data_name, V);
- q.send(O);
- return
- }
- if (typeof(V) === "string") {
- q.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + N);
- j.each(j.extend(L, s.settings.multipart_params), function(X, W) {
- R += P + N + U + 'Content-Disposition: form-data; name="' + W + '"' + U + U;
- R += unescape(encodeURIComponent(X)) + U
- });
- F = j.mimeTypes[u.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream";
- R += P + N + U + 'Content-Disposition: form-data; name="' + s.settings.file_data_name + '"; filename="' + unescape(encodeURIComponent(u.name)) + '"' + U + "Content-Type: " + F + U + U + V + U + P + N + P + U;
- T = R.length - V.length;
- V = R;
- if (q.sendAsBinary) {
- q.sendAsBinary(V)
- } else {
- if (n.canSendBinary) {
- var S = new Uint8Array(V.length);
- for (var Q = 0; Q < V.length; Q++) {
- S[Q] = (V.charCodeAt(Q) & 255)
- }
- q.send(S.buffer)
- }
- }
- return
- }
- }
- E = j.buildUrl(s.settings.url, j.extend(L, s.settings.multipart_params));
- q.open("post", E, true);
- q.setRequestHeader("Content-Type", "application/octet-stream");
- j.each(s.settings.headers, function(X, W) {
- q.setRequestHeader(W, X)
- });
- q.send(V)
- }
-
- if (u.status == j.DONE || u.status == j.FAILED || s.state == j.STOPPED) {
- return
- }
- L = {name: u.target_name || u.name};
- if (v.chunk_size && u.size > v.chunk_size && (n.chunks || typeof(A) == "string")) {
- H = v.chunk_size;
- K = Math.ceil(u.size / H);
- J = Math.min(H, u.size - (D * H));
- if (typeof(A) == "string") {
- I = A.substring(D * H, D * H + J)
- } else {
- I = x(A, D * H, D * H + J)
- }
- L.chunk = D;
- L.chunks = K
- } else {
- J = u.size;
- I = A
- }
- if (s.settings.multipart && n.multipart && typeof(I) !== "string" && z && n.cantSendBlobInFormData && n.chunks && s.settings.chunk_size) {
- z.onload = function() {
- G(z.result)
- };
- z.readAsBinaryString(I)
- } else {
- G(I)
- }
- }
-
- B()
- }
-
- y = c[u.id];
- if (n.jpgresize && s.settings.resize && /\.(png|jpg|jpeg)$/i.test(u.name)) {
- d.call(s, u, s.settings.resize, /\.png$/i.test(u.name) ? "image/png" : "image/jpeg", function(z) {
- if (z.success) {
- u.size = z.data.length;
- w(z.data)
- } else {
- if (n.chunks) {
- w(y)
- } else {
- l(y, w)
- }
- }
- })
- } else {
- if (!n.chunks && n.jpgresize) {
- l(y, w)
- } else {
- w(y)
- }
- }
- });
- p.bind("Destroy", function(s) {
- var u, v, t = k.body, w = {inputContainer: s.id + "_html5_container", inputFile: s.id + "_html5", browseButton: s.settings.browse_button, dropElm: s.settings.drop_element};
- for (u in w) {
- v = k.getElementById(w[u]);
- if (v) {
- j.removeAllEvents(v, s.id)
- }
- }
- j.removeAllEvents(k.body, s.id);
- if (s.settings.container) {
- t = k.getElementById(s.settings.container)
- }
- t.removeChild(k.getElementById(w.inputContainer))
- });
- r({success: true})
- }});
- function b() {
- var q = false, o;
-
- function r(t, v) {
- var s = q ? 0 : -8 * (v - 1), w = 0, u;
- for (u = 0; u < v; u++) {
- w |= (o.charCodeAt(t + u) << Math.abs(s + u * 8))
- }
- return w
- }
-
- function n(u, s, t) {
- var t = arguments.length === 3 ? t : o.length - s - 1;
- o = o.substr(0, s) + u + o.substr(t + s)
- }
-
- function p(t, u, w) {
- var x = "", s = q ? 0 : -8 * (w - 1), v;
- for (v = 0; v < w; v++) {
- x += String.fromCharCode((u >> Math.abs(s + v * 8)) & 255)
- }
- n(x, t, w)
- }
-
- return{II: function(s) {
- if (s === e) {
- return q
- } else {
- q = s
- }
- }, init: function(s) {
- q = false;
- o = s
- }, SEGMENT: function(s, u, t) {
- switch(arguments.length) {
- case 1:
- return o.substr(s, o.length - s - 1);
- case 2:
- return o.substr(s, u);
- case 3:
- n(t, s, u);
- break;
- default:
- return o
- }
- }, BYTE: function(s) {
- return r(s, 1)
- }, SHORT: function(s) {
- return r(s, 2)
- }, LONG: function(s, t) {
- if (t === e) {
- return r(s, 4)
- } else {
- p(s, t, 4)
- }
- }, SLONG: function(s) {
- var t = r(s, 4);
- return(t > 2147483647 ? t - 4294967296 : t)
- }, STRING: function(s, t) {
- var u = "";
- for (t += s; s < t; s++) {
- u += String.fromCharCode(r(s, 1))
- }
- return u
- }}
- }
-
- function f(s) {
- var u = {65505: {app: "EXIF", name: "APP1", signature: "Exif\0"}, 65506: {app: "ICC", name: "APP2", signature: "ICC_PROFILE\0"}, 65517: {app: "IPTC", name: "APP13", signature: "Photoshop 3.0\0"}}, t = [], r, n, p = e, q = 0, o;
- r = new b();
- r.init(s);
- if (r.SHORT(0) !== 65496) {
- return
- }
- n = 2;
- o = Math.min(1048576, s.length);
- while (n <= o) {
- p = r.SHORT(n);
- if (p >= 65488 && p <= 65495) {
- n += 2;
- continue
- }
- if (p === 65498 || p === 65497) {
- break
- }
- q = r.SHORT(n + 2) + 2;
- if (u[p] && r.STRING(n + 4, u[p].signature.length) === u[p].signature) {
- t.push({hex: p, app: u[p].app.toUpperCase(), name: u[p].name.toUpperCase(), start: n, length: q, segment: r.SEGMENT(n, q)})
- }
- n += q
- }
- r.init(null);
- return{headers: t, restore: function(y) {
- r.init(y);
- var w = new f(y);
- if (!w.headers) {
- return false
- }
- for (var x = w.headers.length; x > 0; x--) {
- var z = w.headers[x - 1];
- r.SEGMENT(z.start, z.length, "")
- }
- w.purge();
- n = r.SHORT(2) == 65504 ? 4 + r.SHORT(4) : 2;
- for (var x = 0, v = t.length; x < v; x++) {
- r.SEGMENT(n, 0, t[x].segment);
- n += t[x].length
- }
- return r.SEGMENT()
- }, get: function(x) {
- var y = [];
- for (var w = 0, v = t.length; w < v; w++) {
- if (t[w].app === x.toUpperCase()) {
- y.push(t[w].segment)
- }
- }
- return y
- }, set: function(y, x) {
- var z = [];
- if (typeof(x) === "string") {
- z.push(x)
- } else {
- z = x
- }
- for (var w = ii = 0, v = t.length; w < v; w++) {
- if (t[w].app === y.toUpperCase()) {
- t[w].segment = z[ii];
- t[w].length = z[ii].length;
- ii++
- }
- if (ii >= z.length) {
- break
- }
- }
- }, purge: function() {
- t = [];
- r.init(null)
- }}
- }
-
- function a() {
- var q, n, o = {}, t;
- q = new b();
- n = {tiff: {274: "Orientation", 34665: "ExifIFDPointer", 34853: "GPSInfoIFDPointer"}, exif: {36864: "ExifVersion", 40961: "ColorSpace", 40962: "PixelXDimension", 40963: "PixelYDimension", 36867: "DateTimeOriginal", 33434: "ExposureTime", 33437: "FNumber", 34855: "ISOSpeedRatings", 37377: "ShutterSpeedValue", 37378: "ApertureValue", 37383: "MeteringMode", 37384: "LightSource", 37385: "Flash", 41986: "ExposureMode", 41987: "WhiteBalance", 41990: "SceneCaptureType", 41988: "DigitalZoomRatio", 41992: "Contrast", 41993: "Saturation", 41994: "Sharpness"}, gps: {0: "GPSVersionID", 1: "GPSLatitudeRef", 2: "GPSLatitude", 3: "GPSLongitudeRef", 4: "GPSLongitude"}};
- t = {ColorSpace: {1: "sRGB", 0: "Uncalibrated"}, MeteringMode: {0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other"}, LightSource: {1: "Daylight", 2: "Fliorescent", 3: "Tungsten", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 -5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other"}, Flash: {0: "Flash did not fire.", 1: "Flash fired.", 5: "Strobe return light not detected.", 7: "Strobe return light detected.", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode"}, ExposureMode: {0: "Auto exposure", 1: "Manual exposure", 2: "Auto bracket"}, WhiteBalance: {0: "Auto white balance", 1: "Manual white balance"}, SceneCaptureType: {0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene"}, Contrast: {0: "Normal", 1: "Soft", 2: "Hard"}, Saturation: {0: "Normal", 1: "Low saturation", 2: "High saturation"}, Sharpness: {0: "Normal", 1: "Soft", 2: "Hard"}, GPSLatitudeRef: {N: "North latitude", S: "South latitude"}, GPSLongitudeRef: {E: "East longitude", W: "West longitude"}};
- function p(u, C) {
- var w = q.SHORT(u), z, F, G, B, A, v, x, D, E = [], y = {};
- for (z = 0; z < w; z++) {
- x = v = u + 12 * z + 2;
- G = C[q.SHORT(x)];
- if (G === e) {
- continue
- }
- B = q.SHORT(x += 2);
- A = q.LONG(x += 2);
- x += 4;
- E = [];
- switch(B) {
- case 1:
- case 7:
- if (A > 4) {
- x = q.LONG(x) + o.tiffHeader
- }
- for (F = 0; F < A; F++) {
- E[F] = q.BYTE(x + F)
- }
- break;
- case 2:
- if (A > 4) {
- x = q.LONG(x) + o.tiffHeader
- }
- y[G] = q.STRING(x, A - 1);
- continue;
- case 3:
- if (A > 2) {
- x = q.LONG(x) + o.tiffHeader
- }
- for (F = 0; F < A; F++) {
- E[F] = q.SHORT(x + F * 2)
- }
- break;
- case 4:
- if (A > 1) {
- x = q.LONG(x) + o.tiffHeader
- }
- for (F = 0; F < A; F++) {
- E[F] = q.LONG(x + F * 4)
- }
- break;
- case 5:
- x = q.LONG(x) + o.tiffHeader;
- for (F = 0; F < A; F++) {
- E[F] = q.LONG(x + F * 4) / q.LONG(x + F * 4 + 4)
- }
- break;
- case 9:
- x = q.LONG(x) + o.tiffHeader;
- for (F = 0; F < A; F++) {
- E[F] = q.SLONG(x + F * 4)
- }
- break;
- case 10:
- x = q.LONG(x) + o.tiffHeader;
- for (F = 0; F < A; F++) {
- E[F] = q.SLONG(x + F * 4) / q.SLONG(x + F * 4 + 4)
- }
- break;
- default:
- continue
- }
- D = (A == 1 ? E[0] : E);
- if (t.hasOwnProperty(G) && typeof D != "object") {
- y[G] = t[G][D]
- } else {
- y[G] = D
- }
- }
- return y
- }
-
- function s() {
- var v = e, u = o.tiffHeader;
- q.II(q.SHORT(u) == 18761);
- if (q.SHORT(u += 2) !== 42) {
- return false
- }
- o.IFD0 = o.tiffHeader + q.LONG(u += 2);
- v = p(o.IFD0, n.tiff);
- o.exifIFD = ("ExifIFDPointer" in v ? o.tiffHeader + v.ExifIFDPointer : e);
- o.gpsIFD = ("GPSInfoIFDPointer" in v ? o.tiffHeader + v.GPSInfoIFDPointer : e);
- return true
- }
-
- function r(w, u, z) {
- var B, y, x, A = 0;
- if (typeof(u) === "string") {
- var v = n[w.toLowerCase()];
- for (hex in v) {
- if (v[hex] === u) {
- u = hex;
- break
- }
- }
- }
- B = o[w.toLowerCase() + "IFD"];
- y = q.SHORT(B);
- for (i = 0; i < y; i++) {
- x = B + 12 * i + 2;
- if (q.SHORT(x) == u) {
- A = x + 8;
- break
- }
- }
- if (!A) {
- return false
- }
- q.LONG(A, z);
- return true
- }
-
- return{init: function(u) {
- o = {tiffHeader: 10};
- if (u === e || !u.length) {
- return false
- }
- q.init(u);
- if (q.SHORT(0) === 65505 && q.STRING(4, 5).toUpperCase() === "EXIF\0") {
- return s()
- }
- return false
- }, EXIF: function() {
- var v;
- v = p(o.exifIFD, n.exif);
- if (v.ExifVersion && j.typeOf(v.ExifVersion) === "array") {
- for (var w = 0, u = ""; w < v.ExifVersion.length; w++) {
- u += String.fromCharCode(v.ExifVersion[w])
- }
- v.ExifVersion = u
- }
- return v
- }, GPS: function() {
- var u;
- u = p(o.gpsIFD, n.gps);
- if (u.GPSVersionID) {
- u.GPSVersionID = u.GPSVersionID.join(".")
- }
- return u
- }, setExif: function(u, v) {
- if (u !== "PixelXDimension" && u !== "PixelYDimension") {
- return false
- }
- return r("exif", u, v)
- }, getBinary: function() {
- return q.SEGMENT()
- }}
- }
- })(window, document, plupload);