Swiff.Uploader=new Class({Extends:Swiff,Implements:Events,options:{path:"Swiff.Uploader.swf",target:null,zIndex:9999,height:30,width:100,callBacks:null,params:{wMode:"opaque",menu:"false",allowScriptAccess:"always"},typeFilter:null,multiple:true,queued:true,verbose:false,url:null,method:null,data:null,mergeData:true,fieldName:null,fileSizeMin:1,fileSizeMax:7000000,allowDuplicates:false,buttonImage:null,fileListMax:10,fileListSizeMax:0,instantStart:false,appendCookieData:false,fileClass:null},initialize:function(B){this.addEvent("load",this.initializeSwiff,true).addEvent("select",this.processFiles,true).addEvent("complete",this.update,true);this.setOptions(B);if(this.options.callBacks){Hash.each(this.options.callBacks,function(E,D){this.addEvent(D,E)},this)}this.options.callBacks={fireCallback:this.fireCallback.bind(this)};var C=this.options.path;if(!C.contains("?")){C+="?noCache="+$time()}this.options.container=this.box=new Element("span",{"class":"swiff-uploader-box"}).inject($(this.options.container)||document.body);this.target=$(this.options.target);if(this.target){var A=window.getScroll();this.box.setStyles({position:"absolute",visibility:"visible",zIndex:this.options.zIndex,overflow:"hidden",height:1,width:1,top:A.y,left:A.x});this.parent(C,{params:{wMode:"transparent"},height:"100%",width:"100%"});this.target.addEvent("mouseenter",this.reposition.bind(this,[]));this.addEvents({buttonEnter:this.targetRelay.bind(this,["mouseenter"]),buttonLeave:this.targetRelay.bind(this,["mouseleave"]),buttonDown:this.targetRelay.bind(this,["mousedown"]),buttonDisable:this.targetRelay.bind(this,["disable"])});this.reposition();window.addEvent("resize",this.reposition.bind(this,[]))}else{this.parent(C)}this.inject(this.box);this.fileListSize=0;this.fileList=[];this.size=this.uploading=this.bytesLoaded=this.percentLoaded=0;if(Browser.Plugins.Flash.version<9){this.fireEvent("fail",["flash"])}else{this.verifyLoad.delay(500,this)}},verifyLoad:function(){if(this.loaded){return }if(!this.object.parentNode){this.fireEvent("fail",["disabled"])}else{if(this.object.style.display=="none"){this.fireEvent("fail",["hidden"])}else{if(!this.object.offsetWidth){this.fireEvent("fail",["empty"])}}}},fireCallback:function(B,A){if(B.substr(0,4)=="file"){if(A.length>1){this.update(A[1])}var E=A[0];var C=this.findFile(E.id);if(C){var D=B.replace(/^file([A-Z])/,function(G,F){return F.toLowerCase()});C.update(E).fireEvent(D,[E],10)}this.fireEvent(B,C||E,10)}else{this.fireEvent(B,A,10)}},update:function(A){$extend(this,A);this.fireEvent("queue",[this],10);return this},findFile:function(B){for(var A=0;A<this.fileList.length;A++){if(this.fileList[A].id==B){return this.fileList[A]}}return null},initializeSwiff:function(){this.remote("initialize",{width:this.options.width,height:this.options.height,typeFilter:this.options.typeFilter,multiple:this.options.multiple,queued:this.options.queued,url:this.options.url,method:this.options.method,data:this.options.data,mergeData:this.options.mergeData,fieldName:this.options.fieldName,verbose:this.options.verbose,fileSizeMin:this.options.fileSizeMin,fileSizeMax:this.options.fileSizeMax,allowDuplicates:this.options.allowDuplicates,buttonImage:this.options.buttonImage});this.loaded=true;this.appendCookieData()},targetRelay:function(A){if(this.target){this.target.fireEvent(A)}},reposition:function(A){this.box.setStyles(A||(this.target&&this.target.offsetHeight)?this.target.getCoordinates(this.box.getOffsetParent()):{top:window.getScrollTop(),left:0,width:40,height:40})},setOptions:function(A){if(A){if(A.url){A.url=Swiff.Uploader.qualifyPath(A.url)}if(A.buttonImage){A.buttonImage=Swiff.Uploader.qualifyPath(A.buttonImage)}this.parent(A);if(this.loaded){this.remote("setOptions",A)}}return this},setEnabled:function(A){this.remote("setEnabled",A)},start:function(){this.remote("start")},stop:function(){this.remote("stop")},remove:function(){this.remote("remove")},fileStart:function(A){this.remote("fileStart",A.id)},fileStop:function(A){this.remote("fileStop",A.id)},fileRemove:function(A){this.remote("fileRemove",A.id)},fileRequeue:function(A){this.remote("fileRequeue",A.id)},appendCookieData:function(){var A=this.options.appendCookieData;if(!A){return }var C={};document.cookie.split(/;\s*/).each(function(D){D=D.split("=");if(D.length==2){C[decodeURIComponent(D[0])]=decodeURIComponent(D[1])}});var B=this.options.data||{};if($type(A)=="string"){B[A]=C}else{$extend(B,C)}this.setOptions({data:B})},processFiles:function(F,D,A){var C=this.options.fileClass||Swiff.Uploader.File;var B=[],E=[];if(F){F.each(function(H){var G=new C(this,H);if(!G.validate()){G.remove.delay(10,G);B.push(G)}else{this.fileListSize+=H.size;this.fileList.push(G);E.push(G);G.render()}},this);this.fireEvent("selectSuccess",[E],10)}if(D||B.length){B.extend((D)?D.map(function(G){return new C(this,G)},this):[]).each(function(G){G.invalidate().render()});this.fireEvent("selectFail",[B],10)}this.update(A);if(this.options.instantStart&&E.length){this.start()}}});$extend(Swiff.Uploader,{STATUS_QUEUED:0,STATUS_RUNNING:1,STATUS_ERROR:2,STATUS_COMPLETE:3,STATUS_STOPPED:4,log:function(){if(window.console&&console.info){console.info.apply(console,arguments)}},unitLabels:{b:[{min:1,unit:"B"},{min:1024,unit:"kB"},{min:1048576,unit:"MB"},{min:1073741824,unit:"GB"}],s:[{min:1,unit:"s"},{min:60,unit:"m"},{min:3600,unit:"h"},{min:86400,unit:"d"}]},formatUnit:function(A,H,B){var F=Swiff.Uploader.unitLabels[(H=="bps")?"b":H];var C=(H=="bps")?"/s":"";var E,D=F.length,I;if(A<1){return"0 "+F[0].unit+C}if(H=="s"){var G=[];for(E=D-1;E>=0;E--){I=Math.floor(A/F[E].min);if(I){G.push(I+" "+F[E].unit);A-=I*F[E].min;if(!A){break}}}return(B===false)?G:G.join(B||", ")}for(E=D-1;E>=0;E--){I=F[E].min;if(A>=I){break}}return(A/I).toFixed(1)+" "+F[E].unit+C}});Swiff.Uploader.qualifyPath=(function(){var A;return function(B){(A||(A=new Element("a"))).href=B;return A.href}})();Swiff.Uploader.File=new Class({Implements:Events,initialize:function(B,A){this.base=B;this.update(A);this.addEvent("remove",this.onRemove,true)},update:function(A){return $extend(this,A)},validate:function(){var A=this.base.options;if(A.fileListMax&&this.base.fileList.length>=A.fileListMax){this.validationError="fileListMax";return false}if(A.fileListSizeMax&&(this.base.fileListSize+this.size)>A.fileListSizeMax){this.validationError="fileListSizeMax";return false}return true},invalidate:function(){this.invalid=true;this.base.fireEvent("fileInvalid",this,10);return this.fireEvent("invalid",this,10)},render:function(){return this},setOptions:function(A){if(A){if(A.url){A.url=Swiff.Uploader.qualifyPath(A.url)}this.base.remote("fileSetOptions",this.id,A);this.options=$merge(this.options,A)}return this},start:function(){this.base.fileStart(this);return this},stop:function(){this.base.fileStop(this);return this},remove:function(){this.base.fileRemove(this);return this},requeue:function(){this.base.fileRequeue(this)},onRemove:function(){this.base.fileListSize-=this.size;this.base.fileList.erase(this)}});

