Swiff.Uploader=new Class({Extends:Swiff,Implements:Events,options:{path:"swiff.uploader.swf",multiple:true,queued:true,typeFilter:null,url:null,method:"post",data:null,fieldName:"Filedata",target:null,height:"100%",width:"100%",callBacks:null},initialize:function(e){if(Browser.Plugins.Flash.version<9){return false}this.setOptions(e);this.loaded=false;var b=this.options.callBacks||this;if(b.onLoad){this.addEvent("onLoad",b.onLoad)}if(!b.onBrowse){b.onBrowse=function(){return this.options.typeFilter}}var d={},c=this;["onBrowse","onSelect","onAllSelect","onCancel","onBeforeOpen","onOpen","onProgress","onComplete","onError","onAllComplete"].each(function(g){var h=b[g]||$empty;d[g]=function(){c.fireEvent(g,arguments,10);return h.apply(c,arguments)}});d.onLoad=this.load.create({delay:10,bind:this});this.options.callBacks=d;var f=this.options.path;if(!f.contains("?")){f+="?nocache="+$time()}this.parent(f);var a=window.getScroll();this.box=new Element("div",{styles:{position:"absolute",visibility:"visible",zIndex:9999,overflow:"hidden",height:15,width:15,top:a.y,left:a.x}});this.inject(this.box);this.box.inject($(this.options.container)||document.body);return this},load:function(){this.remote("register",this.instance,this.options.multiple,this.options.queued);this.fireEvent("onLoad");this.target=$(this.options.target);if(this.target){this.reposition();window.addEvent("resize",this.reposition.bind(this))}this.loaded=true},reposition:function(){if(this.target){var a=this.target.getCoordinates(this.box.getOffsetParent());this.box.setStyles(a)}},browse:function(a){if(this.loaded){this.options.typeFilter=$pick(a,this.options.typeFilter);return this.remote("browse")}else{return false}},upload:function(a){if(this.loaded){var b=this.options;a=$extend({data:b.data,url:b.url,method:b.method,fieldName:b.fieldName},a);if($type(a.data)=="element"){a.data=$(a.data).toQueryString()}return this.remote("upload",a)}else{return false}},removeFile:function(a){if(a){a={name:a.name,size:a.size}}return this.remote("removeFile",a)},getFileList:function(){return this.remote("getFileList")}});