/*
Script Name: 	Multiple File Uploader (http://jastegg.it/eggs/upload/ ) 
version: 		1.0 beta
version date:	2007-10-19
Plugin for:		JastEggIt ( http://jastegg.it)
--------------------------------
*/
JASTEggIt.extend('Upload',{info:{title:'Multiple File Uploader',version:'1.0 beta',eggUrl:'http://jastegg.it/eggs/upload',author:'Diego La Monica',url:'http://diegolamonica.info'},options:{maxNumberOfFiles:-1,xhtmlSyntax:true,inputNameFormatFunction:null,fileLinkRenderFunction:null,requestDeleteFunction:null,mainContainerCssClassName:'jast-upload-container',uploadInputCssClassName:'jast-upload-input',uploadButtonFileName:'upload/jast-upload.gif',uploadButtonDisabledFileName:'upload/jast-upload-disabled.gif',buildContainerFunction:null,fileItemCssClassName:'jast-upload-item',buildItemFunction:null,fileDeleteImage:'upload/jast-delete.png',viewLabel:'Scarica',deleteLabel:'Elimina allegato',_ulId:'',_imgId:'',_fileCount:0,_currentFileUploadId:'',_localFiles:[],fileList:[['demo title','http://jastegg.it/index.htm']]},_delete:function(id,liId){var o=this.options;if(isNaN(parseInt(id))){var input=JASTEggIt._id(id);input.parentNode.removeChild(input);this.options._localFiles[id]=null;}else{id=parseInt(id);if(o.requestDeleteFunction!=null&&typeof o.requestDeleteFunction==='function'){if(!this.requestDeleteFunction(o.fileList[id]))return false;}o.fileList[id]=null;}var exceed=this.exceed();this.options._fileCount-=1;var li=JASTEggIt._id(liId);li.parentNode.removeChild(li);if(!this.exceed()&&exceed){JASTEggIt._id(this.options._imgId).src=this.options.uploadButtonFileName;this._createInputFile();}},_createInputFile:function(){var o=this.options;if(this.exceed()){JASTEggIt._id(o._imgId).src=o.uploadButtonDisabledFileName;return false;}var input=document.createElement('input');input.type='file';input.id=JASTEggIt.generateUniqueId('upld');if(o.inputNameFormatFunction!=null){input.name=o.inputNameFormatFunction();}else{input.name=input.id;}input.className=o.uploadInputCssClassName;var ul=JASTEggIt._id(o._ulId);ul.parentNode.insertBefore(input,ul);JASTEggIt.event(input.id,'change',"JASTEggIt.Upload._fileAdded('"+input.id+"')");this.options._currentFileUploadId=input.id;},_fileAdded:function(fileInputId){var fileInput=JASTEggIt._id(fileInputId);var o=this.options;this.options._fileCount+=1;fileInput.style.display='none';this._createInputFile();var liId=JASTEggIt.generateUniqueId('upld');var ul=JASTEggIt._id(o._ulId);var buffer=ul.innerHTML;var v=fileInput.value;v=v.replace(/\\/g,'/');var localResource='file:///'+escape(v);localResource=localResource.replace(/\%3A/g,':');var i=v.lastIndexOf('/');var name=v.substring(i+1,v.length);this.options._localFiles[fileInputId]=name;buffer+='<li id="'+liId+'" class="'+o.fileItemCssClassName+'">'+this._buildFileItem([name,localResource,fileInput.id,liId])+'</li>';ul.innerHTML=buffer;},_buildFileItem:function(item){var o=this.options;var closeTag=(o.xhtmlSyntax?'/>':'>');var buffer='<a href="'+item[1]+'" title="'+o.viewLabel+'">';buffer+=item[0];buffer+='</a>';if(this.options.fileDeleteImage!=''){buffer+='<img src="'+o.fileDeleteImage+'"';buffer+=' onclick="JASTEggIt.Upload._delete(\''+item[2]+'\',\''+item[3]+'\');" ';buffer+=' alt="'+o.deleteLabel+'"'+closeTag;}return buffer;},filesList:function(){var aflist=[];var o=this.options;for(var i=0;i<o.fileList.length;i++){aflist[aflist.length]=o.fileList[i][0];}for(localFile in o._localFiles){aflist[aflist.length]=o._localFiles[localFile];}return aflist;},exceed:function(){return(this.options.maxNumberOfFiles!=-1&&this.options._fileCount>=this.options.maxNumberOfFiles);},setup:function(options){options=JASTEggIt.mergeOptions(options,this.options);this.options=options;var container='';var closeTag=(options.xhtmlSyntax?'/>':'>');var uploadButton='';if(options.maxNumberOfFiles==-1||options.maxNumberOfFiles>options.fileList.length){upldId=JASTEggIt.generateUniqueId('upld');var inputName=upldId;if(options.inputNameFormatFunction!=null&&typeof options.inputNameFormatFunction==='function'){inputName=options.inputNameFormatFunction();}uploadButton+='<input onchange="JASTEggIt.Upload._fileAdded(this);" type="file" name="'+inputName+'" class="'+options.uploadInputCssClassName+'" id="'+upldId+'"'+closeTag;}else{uploadButton='';}var fileItems=[];for(var i=0;i<options.fileList.length;i++){var item=options.fileList[i];item[2]=i;item[3]=JASTEggIt.generateUniqueId('upld');if(options.buildItemFunction!=null&&typeof options.buildItemFunction==='function'){fileItems[fileItems.length]=options.buildItemFunction(item);}else{fileItems[fileItems.length]=this._buildFileItem(item);}}this.options._fileCount=fileItems.length;ulId=JASTEggIt.generateUniqueId('upld');this.options._ulId=ulId;var fileList='\n<ul id="'+ulId+'" >\n';for(i=0;i<fileItems.length;i++){fileList+='<li id="'+item[3]+'" class="'+options.fileItemCssClassName+'">'+fileItems[i]+'</li>\n';}fileList+='\n</ul>\n';if(options.buildContainerFunction!=null&&typeof options.buildContainerFunction==='function')container=options.buildContainerFunction(uploadButton,fileList);else{container+='<div class="'+options.mainContainerCssClassName+'" >';this.options._imgId=JASTEggIt.generateUniqueId('upld');container+='<img id="'+this.options._imgId+'" src="'+options.uploadButtonFileName+'" alt="" '+closeTag;container+=fileList;container+='</div>';}document.write(container);this._createInputFile();}});