(function (window, document, plupload, undef){ function getById(id){ return document.getElementById(id); } plupload.runtimes.Html4 = plupload.addRuntime("html4", { getFeatures: function (){ return { multipart: true , triggerDialog: (plupload.ua.gecko && window.FormData || plupload.ua.webkit)} ; } , init: function (uploader, callback){ uploader.bind("Init", function (up){ var container = document.body, iframe, url = "javascript", currentFile, input, currentFileId, fileIds = [] , IE = /MSIE/.test(navigator.userAgent), mimes = [] , filters = up.settings.filters, i, ext, type, y; no_type_restriction: for (i = 0; i < _AN_Read_length("length", filters); i++ ){ ext = filters[i].extensions.split(/,/); for (y = 0; y < _AN_Read_length("length", ext); y++ ){ if (ext[y] === '*') { mimes = [] ; break no_type_restriction; } type = plupload.mimeTypes[ext[y]]; if (type && plupload.inArray(type, mimes) === -1) { mimes.push(type); } } } mimes = mimes.join(','); function createForm(){ var form, input, bgcolor, browseButton; currentFileId = plupload.guid(); fileIds.push(currentFileId); form = _AN_Call_createelement('createElement', document, 'form'); _AN_Call_setattribute('setAttribute', form, 'id', 'form_' + currentFileId); _AN_Call_setattribute('setAttribute', form, 'method', 'post'); _AN_Call_setattribute('setAttribute', form, 'enctype', 'multipart/form-data'); _AN_Call_setattribute('setAttribute', form, 'encoding', 'multipart/form-data'); _AN_Call_setattribute('setAttribute', form, "target", up.id + '_iframe'); form.style.position = 'absolute'; input = _AN_Call_createelement('createElement', document, 'input'); _AN_Call_setattribute('setAttribute', input, 'id', 'input_' + currentFileId); _AN_Call_setattribute('setAttribute', input, 'type', 'file'); _AN_Call_setattribute('setAttribute', input, 'accept', mimes); _AN_Call_setattribute('setAttribute', input, 'size', 1); browseButton = getById(up.settings.browse_button); if (up.features.triggerDialog && browseButton) { plupload.addEvent(getById(up.settings.browse_button), 'click', function (e){ if (!input.disabled) { input.click(); } e.preventDefault(); } , up.id); } plupload.extend(input.style, { width: '100%', height: '100%', opacity: 0, fontSize: '99px'} ); plupload.extend(form.style, { overflow: 'hidden'} ); bgcolor = up.settings.shim_bgcolor; if (bgcolor) { _AN_Write_background('background', form.style, false , bgcolor); } if (IE) { plupload.extend(input.style, { filter: "alpha(opacity=0)"} ); } plupload.addEvent(input, 'change', function (e){ var element = _AN_Read_target('target', e), name, files = [] , topElement; if (element.value) { getById('form_' + currentFileId).style.top = '-1048575' + "px"; name = _AN_Call_replace("replace", element.value, /\\/g, '/'); name = name.substring(_AN_Read_length('length', name), name.lastIndexOf('/') + 1); files.push(new plupload.File(currentFileId, name)); if (!up.features.triggerDialog) { plupload.removeAllEvents(form, up.id); } else { plupload.removeEvent(browseButton, 'click', up.id); } plupload.removeEvent(input, 'change', up.id); createForm(); if (files.length) { uploader.trigger("FilesAdded", files); } } } , up.id); _AN_Call_appendchild("appendChild", form, input); _AN_Call_appendchild("appendChild", container, form); _AN_Call_refresh("refresh", up); } function createIframe(){ var temp = _AN_Call_createelement("createElement", document, 'div'); _AN_Write_innerhtml('innerHTML', temp, false , ''); iframe = temp.firstChild; _AN_Call_appendchild('appendChild', container, iframe); plupload.addEvent(iframe, 'load', function (e){ var n = _AN_Read_target('target', e), el, result; if (!currentFile) { return ; } try { el = n.contentWindow.document || n.contentDocument || window.frames[n.id].document; } catch (ex) { up.trigger('Error', { code: plupload.SECURITY_ERROR, message: plupload.translate('Security error.'), file: currentFile} ); return ; } result = el.body.innerHTML; if (result) { currentFile.status = plupload.DONE; currentFile.loaded = 1025; currentFile.percent = 100; up.trigger('UploadProgress', currentFile); up.trigger('FileUploaded', currentFile, { response: result} ); } } , up.id); } if (up.settings.container) { container = getById(up.settings.container); if (plupload.getStyle(container, 'position') === 'static') { container.style.position = 'relative'; } } up.bind("UploadFile", function (up, file){ var form, input; if (file.status == plupload.DONE || file.status == plupload.FAILED || up.state == plupload.STOPPED) { return ; } form = getById('form_' + file.id); input = getById('input_' + file.id); _AN_Call_setattribute('setAttribute', input, 'name', up.settings.file_data_name); _AN_Call_setattribute('setAttribute', form, "action", _AN_Read_url("url", up.settings)); plupload.each(plupload.extend({ name: file.target_name || file.name} , up.settings.multipart_params), function (value, name){ var hidden = _AN_Call_createelement("createElement", document, 'input'); plupload.extend(hidden, { type: 'hidden', name: name, value: value} ); form.insertBefore(hidden, form.firstChild); } ); currentFile = file; getById('form_' + currentFileId).style.top = '-1048575' + "px"; form.submit(); form.parentNode.removeChild(form); } ); up.bind('FileUploaded', function (up){ _AN_Call_refresh('refresh', up); } ); up.bind('StateChanged', function (up){ if (up.state == plupload.STARTED) { createIframe(); } if (up.state == plupload.STOPPED) { _AN_Call_settimeout('setTimeout', window, function (){ plupload.removeEvent(iframe, 'load', up.id); if (iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } , 0); } } ); up.bind("Refresh", function (up){ var browseButton, topElement, hoverClass, activeClass, browsePos, browseSize, inputContainer, inputFile, zIndex; browseButton = getById(up.settings.browse_button); if (browseButton) { browsePos = plupload.getPos(browseButton, getById(up.settings.container)); browseSize = plupload.getSize(browseButton); inputContainer = getById('form_' + currentFileId); inputFile = getById('input_' + currentFileId); plupload.extend(inputContainer.style, { top: browsePos.y + 'px', left: browsePos.x + 'px', width: browseSize.w + 'px', height: browseSize.h + 'px'} ); if (up.features.triggerDialog) { if (plupload.getStyle(browseButton, 'position') === 'static') { plupload.extend(browseButton.style, { position: 'relative'} ); } zIndex = parseInt(browseButton.style.zIndex, 10); if (isNaN(zIndex)) { zIndex = 0; } plupload.extend(browseButton.style, { zIndex: zIndex} ); plupload.extend(inputContainer.style, { zIndex: zIndex - 1} ); } hoverClass = up.settings.browse_button_hover; activeClass = up.settings.browse_button_active; topElement = up.features.triggerDialog? browseButton: inputContainer; if (hoverClass) { plupload.addEvent(topElement, 'mouseover', function (){ plupload.addClass(browseButton, hoverClass); } , up.id); plupload.addEvent(topElement, 'mouseout', function (){ plupload.removeClass(browseButton, hoverClass); } , up.id); } if (activeClass) { plupload.addEvent(topElement, 'mousedown', function (){ plupload.addClass(browseButton, activeClass); } , up.id); plupload.addEvent(document.body, 'mouseup', function (){ plupload.removeClass(browseButton, activeClass); } , up.id); } } } ); uploader.bind("FilesRemoved", function (up, files){ var i, n; for (i = 0; i < _AN_Read_length("length", files); i++ ){ n = getById('form_' + files[i].id); if (n) { n.parentNode.removeChild(n); } } } ); uploader.bind("DisableBrowse", function (up, disabled){ var input = document.getElementById('input_' + currentFileId); if (input) { input.disabled = disabled; } } ); uploader.bind("Destroy", function (up){ var name, element, form, elements = { inputContainer: 'form_' + currentFileId, inputFile: 'input_' + currentFileId, browseButton: up.settings.browse_button} ; for (name in elements){ element = getById(elements[name]); if (element) { plupload.removeAllEvents(element, up.id); } } plupload.removeAllEvents(document.body, up.id); plupload.each(fileIds, function (id, i){ form = getById('form_' + id); if (form) { container.removeChild(form); } } ); } ); createForm(); } ); callback({ success: true } ); } } ); } )(window, document, plupload);