var FancyUpload=new Class({options:{url:false,swf:"Swiff.Uploader.swf",multiple:true,queued:true,types:{},limitSize:false,limitFiles:false,createReplacement:null,instantStart:false,allowDuplicates:false,optionFxDuration:250,container:null,queueList:"photoupload-queue",allCompleate:false,onComplete:Class.empty,onError:Class.empty,onCancel:Class.empty,onAllComplete:Class.empty,browseElement:null,width:1,height:1,wmode:null},initialize:function(B,A){this.element=$(B);this.setOptions(A);this.options.url=this.options.url||this.element.form.action||location.href;this.fileList=[];this.uploader=new Swiff.Uploader({onOpen:this.onOpen.bind(this),onProgress:this.onProgress.bind(this),onComplete:this.onComplete.bind(this),onError:this.onError.bind(this),onSelect:this.onSelect.bind(this)},this.initializeFlash.bind(this),{swf:this.options.swf,types:this.options.types,multiple:this.options.multiple,queued:this.options.queued,container:this.options.container,width:this.options.width,height:this.options.height,wmode:this.options.wmode});this.options.container.setStyles({position:"absolute",overflow:"hidden",width:"20px",height:"20px",top:0,left:0})},initializeFlash:function(){this.queue=$(this.options.queueList);$(this.element.form).addEvent("submit",this.upload.bindWithEvent(this));if(this.options.createReplacement){this.options.createReplacement.pass([this.element],this)}else{var A=this.element.getParent().getElement("input[class=BrowseButton]");if(!$defined(A)){A=new Element("a",{href:"javascript://",value:"Browse"}).injectBefore(this.element);A.setText("Browse")}A.addEvent("click",this.browse.bind(this));this.options.browseElement=A;this.element.remove();this.options.container.setStyles({width:A.getSize().size.x,height:A.getSize().size.y,top:A.getTop()-this.options.container.getTop(),left:A.getLeft()-this.options.container.getLeft()})}},browse:function(){this.uploader.browse()},upload:function(A){if(A){A.stop()}this.uploader.send(this.options.url)},onSelect:function(A,B){if(this.uploadTimer){this.uploadTimer=$clear(this.uploadTimer)}if((this.options.limitSize&&(B>this.options.limitSize))||(this.options.limitFiles&&(this.fileList.length>=this.options.limitFiles))||(!this.options.allowDuplicates&&this.findFile(A,B)!=-1)){return false}this.addFile(A,B);if(this.options.instantStart){this.uploadTimer=this.upload.delay(250,this)}return true},onOpen:function(B,C){var A=this.findFile(B,C);this.fileList[A].status=1;if(this.fileList[A].fx){return }this.fileList[A].fx=new Element("div",{"class":"queue-subloader"}).injectInside(new Element("div",{"class":"queue-loader"}).setHTML("Uploading").injectInside(this.fileList[A].element)).effect("width",{duration:200,wait:false,unit:"%",transition:Fx.Transitions.linear}).set(0)},onProgress:function(C,B,D,A){this.uploadStatus(C,D,A)},onComplete:function(B,C){var A=this.uploadStatus(B,C,100);this.fileList[A].fx.element.setHTML("Completed");this.fileList[A].status=2;this.highlight(A,"e1ff80");this.checkComplete(B,C,"onComplete")},onError:function(C,D,B){var E="Upload failed ("+B+")";switch(B.toInt()){case 500:E="Internal server error, please contact Administrator!";break;case 400:E="Upload failed, please check your filesize!";break;case 409:E="Could not process image, please choose another!";break;case 415:E="Unsupported media type, please upload GIF, PNG, TIFF or JPEG!";break;case 412:E="Invalid target, please reload page and try again!";break;case 417:E="File too small!";break}var A=this.uploadStatus(C,D,100);this.fileList[A].fx.element.setStyle("background-color","#ffd780").setHTML(E);this.fileList[A].status=2;this.highlight(A,"ffd780");this.checkComplete(C,D,"onError")},checkComplete:function(A,B,C){this.fireEvent(C,[A,B]);if(this.nextFile()==-1){this.options.allCompleate=true;this.fireEvent("onAllComplete")}},addFile:function(A,B){this.options.container.setStyle("width","1px");if(!this.options.multiple&&this.fileList.length){this.remove(this.fileList[0].name,this.fileList[0].size)}this.fileList.push({name:A,size:B,status:0,percentage:0,element:new Element("div").setHTML('<div class="add_file"><a href="#" title="edit">'+A+"</a></div>").injectInside(this.queue)});new Element("img",{src:"/img/adult/myspace/remove.gif",width:"9",height:"9",alt:"remove",events:{click:this.cancelFile.bindWithEvent(this,[A,B])}}).inject(this.fileList.getLast().element);if(this.options.limitFiles&&this.fileList.length>=this.options.limitFiles){this.options.browseElement.setProperty("style","display: none")}else{this.options.browseElement.setProperty("style","display: block")}},uploadStatus:function(C,D,A){var B=this.findFile(C,D);this.fileList[B].fx.start(A).element.setHTML(A+"%");this.fileList[B].percentage=A;return B},uploadOverview:function(){var B=this.fileList.length,C=-1,A=0;while(++C<B){A+=this.fileList[C].percentage}return Math.ceil(A/B)},highlight:function(B,A){return this.fileList[B].element.effect("background-color",{duration:this.options.optionFxDuration}).start(A,"fff")},cancelFile:function(C,A,B){C.stop();this.remove(A,B)},remove:function(B,C,A){if(B){A=this.findFile(B,C)}if(A==-1){return }if(this.fileList[A].status<2){this.uploader.remove(B,C);this.checkComplete(B,C,"onCancel")}this.fileList[A].element.effect("opacity",{duration:this.options.optionFxDuration}).start(1,0).chain(Element.remove.pass([this.fileList[A].element],Element));this.fileList.splice(A,1);if(this.options.limitFiles&&this.fileList.length>=this.options.limitFiles){this.options.browseElement.setProperty("style","display: none")}else{this.options.browseElement.setProperty("style","display: block");this.options.container.setStyle("width",this.options.browseElement.getSize().size.x)}return },findFile:function(B,D){var A=this.fileList.length,C=-1;while(++C<A){if(this.fileList[C].name==B&&this.fileList[C].size==D){return C}}return -1},nextFile:function(){var A=this.fileList.length,B=-1;while(++B<A){if(this.fileList[B].status!=2){return B}}return -1},clearList:function(A){var B=-1;while(++B<this.fileList.length){if(A||this.fileList[B].status==2){this.remove(0,0,0,B--)}}}});FancyUpload.implement(new Events,new Options);
