]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/javascript/yui3/build/io/io-upload-iframe.js
Release 6.2.0beta4
[Github/sugarcrm.git] / include / javascript / yui3 / build / io / io-upload-iframe.js
1 /*
2  Copyright (c) 2009, Yahoo! Inc. All rights reserved.
3  Code licensed under the BSD License:
4  http://developer.yahoo.net/yui/license.txt
5  version: 3.0.0
6  build: 1549
7  */
8 YUI.add('io-upload-iframe',function(Y){var w=Y.config.win;function _addData(f,s){var o=[],m=s.split('='),i,l;for(i=0,l=m.length-1;i<l;i++){o[i]=document.createElement('input');o[i].type='hidden';o[i].name=m[i].substring(m[i].lastIndexOf('&')+1);o[i].value=(i+1===l)?m[i+1]:m[i+1].substring(0,(m[i+1].lastIndexOf('&')));f.appendChild(o[i]);}
9 return o;}
10 function _removeData(f,o){var i,l;for(i=0,l=o.length;i<l;i++){f.removeChild(o[i]);}}
11 function _setAttrs(f,id,uri){var ie8=(document.documentMode&&document.documentMode===8)?true:false;f.setAttribute('action',uri);f.setAttribute('method','POST');f.setAttribute('target','ioupload'+id);f.setAttribute(Y.UA.ie&&!ie8?'encoding':'enctype','multipart/form-data');}
12 function _resetAttrs(f,a){var p;for(p in a){if(a.hasOwnProperty(a,p)){if(a[p]){f.setAttribute(p,f[p]);}
13 else{f.removeAttribute(p);}}}}
14 function _create(o,c){var i=Y.Node.create('<iframe id="ioupload'+o.id+'" name="ioupload'+o.id+'" />');i._node.style.position='absolute';i._node.style.top='-1000px';i._node.style.left='-1000px';Y.one('body').appendChild(i);Y.on("load",function(){_handle(o,c)},'#ioupload'+o.id);}
15 function _handle(o,c){var d=Y.one('#ioupload'+o.id).get('contentWindow.document'),b=d.one('body'),xml=(d._node.nodeType===9),p;if(c.timeout){_clearTimeout(o.id);}
16 if(b){p=b.query('pre:first-child');o.c.responseText=p?p.get('innerHTML'):b.get('innerHTML');}
17 else if(xml){o.c.responseXML=d._node;}
18 Y.io.complete(o,c);Y.io.end(o,c);w.setTimeout(function(){_destroy(o.id);},0);}
19 function _startTimeout(o,c){Y.io._timeout[o.id]=w.setTimeout(function(){var r={id:o.id,status:'timeout'};Y.io.complete(r,c);Y.io.end(r,c);},c.timeout);}
20 function _clearTimeout(id){w.clearTimeout(Y.io._timeout[id]);delete Y.io._timeout[id];}
21 function _destroy(id){Y.Event.purgeElement('#ioupload'+id,false);Y.one('body').removeChild(Y.one('#ioupload'+id));}
22 Y.mix(Y.io,{_upload:function(o,uri,c){var f=(typeof c.form.id==='string')?Y.config.doc.getElementById(c.form.id):c.form.id,fields,attr={action:f.getAttribute('action'),target:f.getAttribute('target')};_create(o,c);_setAttrs(f,o.id,uri);if(c.data){fields=_addData(f,c.data);}
23 if(c.timeout){_startTimeout(o,c);}
24 f.submit();Y.io.start(o.id,c);if(c.data){_removeData(f,fields);}
25 _resetAttrs(f,attr);return{id:o.id,abort:function(){var r={id:o.id,status:'abort'};if(Y.one('#ioupload'+o.id)){_destroy(o.id);Y.io.complete(r,c);Y.io.end(r,c);}
26 else{return false;}},isInProgress:function(){return Y.one('#ioupload'+o.id)?true:false;}}}});},'3.0.0',{requires:['io-base','node-base','event-base']});