jQuery.extend({ createuploadiframe: function(id, url) { var iframeid = 'uploadiframe' + id; var iframe = ''; jQuery(iframe).css({'position':'absolute', 'top':'-1200px', 'left':'-1200px'}).appendTo(document.body); return jQuery('#' + iframeid).get(0); }, createuploadform: function(id, fileobjid, data) { var formid = 'uploadform' + id; var fileid = 'uploadfile' + id; var form = jQuery('
'); if(data) { for(var i in data) { jQuery('').appendTo(form); } } var oldobj = jQuery('#' + fileobjid); var newobj = jQuery(oldobj).clone(); jQuery(oldobj).attr('id', fileid).before(newobj).appendTo(form); jQuery(form).css({'position':'absolute', 'top':'-1200px', 'left':'-1200px'}).appendTo(document.body); return form; }, ajaxfileupload: function(s) { s = jQuery.extend({}, jQuery.ajaxSettings, s); var id = new Date().getTime(); var form = jQuery.createuploadform(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data)); var io = jQuery.createuploadiframe(id, s.secureuri); var iframeid = 'uploadiframe' + id; var formid = 'uploadform' + id; if(s.global && ! jQuery.active++) { jQuery.event.trigger("ajaxStart"); } var requestDone = false; var xml = {}; if(s.global) { jQuery.event.trigger("ajaxSend", [xml, s]); } var uploadcallback = function(istimeout) { var io = document.getElementById(iframeid); try { if(io.contentWindow) { xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null; xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document; } else if(io.contentDocument) { xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null; xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document; } } catch(e) { jQuery.handleerror(s, xml, null, e); } if(xml||istimeout == 'timeout') { requestdone = true; var status; try { status = istimeout != 'timeout' ? 'success' : 'error'; if(status != 'error') { var data = jQuery.uploadhttpdata(xml, s.dataType); if(s.success) { s.success( data, status ); } if(s.global) { jQuery.event.trigger("ajaxSuccess", [xml, s]); } } else { jQuery.handleerror(s, xml, status); } } catch(e) { status = 'error'; jQuery.handleerror(s, xml, status, e); } if(s.global) { jQuery.event.trigger("ajaxComplete", [xml, s]); } if(s.global && ! --jQuery.active) { jQuery.event.trigger("ajaxStop"); } if (s.complete) { s.complete(xml, status); } jQuery(io).off(); setTimeout(function() { try { jQuery(io).remove(); jQuery(form).remove(); } catch(e) { jQuery.handleerror(s, xml, null, e); } }, 100); xml = null; } } if(s.timeout > 0) { setTimeout(function() { if(!requestdone) { uploadcallback('timeout'); } }, s.timeout); } try { var form = jQuery('#' + formid); jQuery(form).attr('action', s.url).attr('method', 'post').attr('target', iframeid); if(form.encoding) { jQuery(form).attr('encoding', 'multipart/form-data'); } else { jQuery(form).attr('enctype', 'multipart/form-data'); } jQuery(form).submit(); } catch(e) { jQuery.handleerror(s, xml, null, e); } jQuery('#' + iframeid).load(uploadcallback); return {abort: function () {}}; }, uploadhttpdata: function(r, type) { var data = !type; data = type == 'xml' || data ? r.responseXML : r.responseText; if(type == 'script') { jQuery.globalEval(data); } if(type == "json") { eval("data = " + data); } if(type == "html") { jQuery("