(function (window, document, plupload, undef){ var uploadInstances = { } , initialized = { } ; function getFlashVersion(){ var version; try { version = navigator.plugins["Shockwave Flash"] ; version = version.description; } catch (e1) { try { version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version'); } catch (e2) { version = '0.0'; } } version = version.match(/\d+/g); return parseFloat(version[0] + '.' + version[1]); } plupload.flash = { trigger: function (id, name, obj){ _AN_Call_settimeout('setTimeout', window, function (){ var uploader = uploadInstances[id], i, args; if (uploader) { uploader.trigger('Flash:' + name, obj); } } , 0); } } ; plupload.runtimes.Flash = plupload.addRuntime("flash", { getFeatures: function (){ return { jpgresize: true , pngresize: true , maxWidth: 8091, maxHeight: 8091, chunks: true , progress: true , multipart: true , multi_selection: true } ; } , init: function (uploader, callback){ var browseButton, flashContainer, waitCount = 0, container = document.body; if (getFlashVersion() < 10) { callback({ success: false } ); return ; } initialized[uploader.id] = false ; uploadInstances[uploader.id] = uploader; browseButton = document.getElementById(uploader.settings.browse_button); flashContainer = _AN_Call_createelement("createElement", document, 'div'); flashContainer.id = uploader.id + '_flash_container'; plupload.extend(flashContainer.style, { position: 'absolute', top: '0px', background: uploader.settings.shim_bgcolor || 'transparent', zIndex: 99999, width: '100%', height: '100%'} ); flashContainer.className = 'plupload flash'; if (uploader.settings.container) { container = document.getElementById(uploader.settings.container); if (plupload.getStyle(container, 'position') === 'static') { container.style.position = 'relative'; } } _AN_Call_appendchild('appendChild', container, flashContainer); (function (){ var html, el; html = '' + '' + '' + '' + ''; if (plupload.ua.ie) { el = _AN_Call_createelement('createElement', document, 'div'); _AN_Call_appendchild('appendChild', flashContainer, el); _AN_Write_outerhtml('outerHTML', el, false , html); el = null ; } else { _AN_Write_innerhtml('innerHTML', flashContainer, false , html); } } ()); function getFlashObj(){ return document.getElementById(uploader.id + '_flash'); } function waitLoad(){ if (waitCount++ > 5000) { callback({ success: false } ); return ; } if (!initialized[uploader.id]) { _AN_Call_settimeout('setTimeout', window, waitLoad, 1); } } waitLoad(); browseButton = flashContainer = null ; uploader.bind("Flash:Init", function (){ var lookup = { } , i; getFlashObj().setFileFilters(uploader.settings.filters, uploader.settings.multi_selection); if (initialized[uploader.id]) { return ; } initialized[uploader.id] = true ; uploader.bind("UploadFile", function (up, file){ var settings = up.settings, resize = uploader.settings.resize || { } ; getFlashObj().uploadFile(lookup[file.id], _AN_Read_url("url", settings), { name: file.target_name || file.name, mime: plupload.mimeTypes[_AN_Call_replace("replace", file.name, /^.+\.([^.]+)/, '$1').toLowerCase()] || 'application/octet-stream', chunk_size: settings.chunk_size, width: resize.width, height: resize.height, quality: resize.quality, multipart: settings.multipart, multipart_params: settings.multipart_params || { } , file_data_name: settings.file_data_name, format: /\.(jpg|jpeg)$/i.test(file.name)? 'jpg': 'png', headers: settings.headers, urlstream_upload: settings.urlstream_upload} ); } ); uploader.bind("CancelUpload", function (){ getFlashObj().cancelUpload(); } ); uploader.bind("Flash:UploadProcess", function (up, flash_file){ var file = up.getFile(lookup[flash_file.id]); if (file.status != plupload.FAILED) { file.loaded = flash_file.loaded; file.size = flash_file.size; up.trigger('UploadProgress', file); } } ); uploader.bind("Flash:UploadChunkComplete", function (up, info){ var chunkArgs, file = up.getFile(lookup[info.id]); chunkArgs = { chunk: info.chunk, chunks: info.chunks, response: info.text} ; up.trigger('ChunkUploaded', file, chunkArgs); if (file.status !== plupload.FAILED && up.state !== plupload.STOPPED) { getFlashObj().uploadNextChunk(); } if (info.chunk == info.chunks - 1) { file.status = plupload.DONE; up.trigger('FileUploaded', file, { response: info.text} ); } } ); uploader.bind("Flash:SelectFiles", function (up, selected_files){ var file, i, files = [] , id; for (i = 0; i < _AN_Read_length("length", selected_files); i++ ){ file = selected_files[i]; id = plupload.guid(); lookup[id] = file.id; lookup[file.id] = id; files.push(new plupload.File(id, file.name, file.size)); } if (files.length) { uploader.trigger("FilesAdded", files); } } ); uploader.bind("Flash:SecurityError", function (up, err){ uploader.trigger('Error', { code: plupload.SECURITY_ERROR, message: plupload.translate('Security error.'), details: err.message, file: uploader.getFile(lookup[err.id])} ); } ); uploader.bind("Flash:GenericError", function (up, err){ uploader.trigger('Error', { code: plupload.GENERIC_ERROR, message: plupload.translate('Generic error.'), details: err.message, file: uploader.getFile(lookup[err.id])} ); } ); uploader.bind("Flash:IOError", function (up, err){ uploader.trigger('Error', { code: plupload.IO_ERROR, message: plupload.translate('IO error.'), details: err.message, file: uploader.getFile(lookup[err.id])} ); } ); uploader.bind("Flash:ImageError", function (up, err){ uploader.trigger('Error', { code: parseInt(err.code, 10), message: plupload.translate('Image error.'), file: uploader.getFile(lookup[err.id])} ); } ); uploader.bind('Flash:StageEvent:rollOver', function (up){ var browseButton, hoverClass; browseButton = document.getElementById(uploader.settings.browse_button); hoverClass = up.settings.browse_button_hover; if (browseButton && hoverClass) { plupload.addClass(browseButton, hoverClass); } } ); uploader.bind('Flash:StageEvent:rollOut', function (up){ var browseButton, hoverClass; browseButton = document.getElementById(uploader.settings.browse_button); hoverClass = up.settings.browse_button_hover; if (browseButton && hoverClass) { plupload.removeClass(browseButton, hoverClass); } } ); uploader.bind('Flash:StageEvent:mouseDown', function (up){ var browseButton, activeClass; browseButton = document.getElementById(uploader.settings.browse_button); activeClass = up.settings.browse_button_active; if (browseButton && activeClass) { plupload.addClass(browseButton, activeClass); plupload.addEvent(document.body, 'mouseup', function (){ plupload.removeClass(browseButton, activeClass); } , up.id); } } ); uploader.bind('Flash:StageEvent:mouseUp', function (up){ var browseButton, activeClass; browseButton = document.getElementById(uploader.settings.browse_button); activeClass = up.settings.browse_button_active; if (browseButton && activeClass) { plupload.removeClass(browseButton, activeClass); } } ); uploader.bind('Flash:ExifData', function (up, obj){ uploader.trigger('ExifData', uploader.getFile(lookup[obj.id]), obj.data); } ); uploader.bind('Flash:GpsData', function (up, obj){ uploader.trigger('GpsData', uploader.getFile(lookup[obj.id]), obj.data); } ); uploader.bind("QueueChanged", function (up){ _AN_Call_refresh("refresh", uploader); } ); uploader.bind("FilesRemoved", function (up, files){ var i; for (i = 0; i < _AN_Read_length("length", files); i++ ){ getFlashObj().removeFile(lookup[files[i].id]); } } ); uploader.bind("StateChanged", function (up){ _AN_Call_refresh("refresh", uploader); } ); uploader.bind("Refresh", function (up){ var browseButton, browsePos, browseSize; getFlashObj().setFileFilters(uploader.settings.filters, uploader.settings.multi_selection); browseButton = document.getElementById(up.settings.browse_button); if (browseButton) { browsePos = plupload.getPos(browseButton, document.getElementById(up.settings.container)); browseSize = plupload.getSize(browseButton); plupload.extend(document.getElementById(up.id + '_flash_container').style, { top: browsePos.y + 'px', left: browsePos.x + 'px', width: browseSize.w + 'px', height: browseSize.h + 'px'} ); } } ); uploader.bind("DisableBrowse", function (up, disabled){ getFlashObj().disableBrowse(disabled); } ); uploader.bind("Destroy", function (up){ var flashContainer; plupload.removeAllEvents(document.body, up.id); delete initialized[up.id]; delete uploadInstances[up.id]; flashContainer = document.getElementById(up.id + '_flash_container'); if (flashContainer) { container.removeChild(flashContainer); } } ); callback({ success: true } ); } ); } } ); } )(window, document, plupload);