| /* | 
|     Queue Plug-in | 
|      | 
|     Features: | 
|         *Adds a cancelQueue() method for cancelling the entire queue. | 
|         *All queued files are uploaded when startUpload() is called. | 
|         *If false is returned from uploadComplete then the queue upload is stopped. | 
|          If false is not returned (strict comparison) then the queue upload is continued. | 
|         *Adds a QueueComplete event that is fired when all the queued files have finished uploading. | 
|          Set the event handler with the queue_complete_handler setting. | 
|          | 
|     */ | 
|   | 
| var SWFUpload; | 
| if (typeof(SWFUpload) === "function") { | 
|     SWFUpload.queue = {}; | 
|      | 
|     SWFUpload.prototype.initSettings = (function (oldInitSettings) { | 
|         return function () { | 
|             if (typeof(oldInitSettings) === "function") { | 
|                 oldInitSettings.call(this); | 
|             } | 
|              | 
|             this.queueSettings = {}; | 
|              | 
|             this.queueSettings.queue_cancelled_flag = false; | 
|             this.queueSettings.queue_upload_count = 0; | 
|              | 
|             this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler; | 
|             this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler; | 
|             this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler; | 
|             this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler; | 
|              | 
|             this.settings.queue_complete_handler = this.settings.queue_complete_handler || null; | 
|         }; | 
|     })(SWFUpload.prototype.initSettings); | 
|   | 
|     SWFUpload.prototype.startUpload = function (fileID) { | 
|         this.queueSettings.queue_cancelled_flag = false; | 
|         this.callFlash("StartUpload", [fileID]); | 
|     }; | 
|   | 
|     SWFUpload.prototype.cancelQueue = function () { | 
|         this.queueSettings.queue_cancelled_flag = true; | 
|         this.stopUpload(); | 
|          | 
|         var stats = this.getStats(); | 
|         while (stats.files_queued > 0) { | 
|             this.cancelUpload(); | 
|             stats = this.getStats(); | 
|         } | 
|     }; | 
|      | 
|     SWFUpload.queue.uploadStartHandler = function (file) { | 
|         var returnValue; | 
|         if (typeof(this.queueSettings.user_upload_start_handler) === "function") { | 
|             returnValue = this.queueSettings.user_upload_start_handler.call(this, file); | 
|         } | 
|          | 
|         // To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value. | 
|         returnValue = (returnValue === false) ? false : true; | 
|          | 
|         this.queueSettings.queue_cancelled_flag = !returnValue; | 
|   | 
|         return returnValue; | 
|     }; | 
|      | 
|     SWFUpload.queue.uploadCompleteHandler = function (file) { | 
|         var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler; | 
|         var continueUpload; | 
|          | 
|         if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) { | 
|             this.queueSettings.queue_upload_count++; | 
|         } | 
|   | 
|         if (typeof(user_upload_complete_handler) === "function") { | 
|             continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true; | 
|         } else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) { | 
|             // If the file was stopped and re-queued don't restart the upload | 
|             continueUpload = false; | 
|         } else { | 
|             continueUpload = true; | 
|         } | 
|          | 
|         if (continueUpload) { | 
|             var stats = this.getStats(); | 
|             if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) { | 
|                 this.startUpload(); | 
|             } else if (this.queueSettings.queue_cancelled_flag === false) { | 
|                 this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]); | 
|                 this.queueSettings.queue_upload_count = 0; | 
|             } else { | 
|                 this.queueSettings.queue_cancelled_flag = false; | 
|                 this.queueSettings.queue_upload_count = 0; | 
|             } | 
|         } | 
|     }; | 
| } |