| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- /*
 
- * This file is part of the jquery plugin "asyncQueue".
 
- *
 
- * (c) Sebastien Roch <roch.sebastien@gmail.com>
 
- * @author (parallel) Dmitry Farafonov
 
- *
 
- * For the full copyright and license information, please view the LICENSE
 
- * file that was distributed with this source code.
 
- */
 
- (function($){
 
-     $.AsyncQueue = function() {
 
-         var that = this,
 
-             queue = [],
 
- 			completeFunc,
 
-             failureFunc,
 
-             paused = false,
 
-             lastCallbackData,
 
-             _run,
 
- 			_complete,
 
- 			inQueue = 0,
 
- 			defaultTimeOut = 10;
 
-         _run = function() {
 
-             var f = queue.shift();
 
-             if (f) {
 
- 				inQueue++;
 
- 				setTimeout(function(){
 
- 					f.fn.apply(that, [that]);
 
- 				
 
- 					if (!f.isParallel)
 
- 						if (paused === false) {
 
- 							_run();
 
- 						}
 
- 					inQueue --;
 
- 					if (inQueue == 0 && queue.length == 0)
 
- 						_complete();
 
- 				}, f.timeOut);                
 
- 				
 
- 				if (f.isParallel)
 
- 					if (paused === false) {
 
- 						_run();
 
- 					}
 
-             }
 
-         };
 
- 		
 
- 		_complete = function(){
 
- 			if (completeFunc)
 
- 					completeFunc.apply(that, [that]);
 
- 		};
 
- 		this.onComplete = function(func) {
 
-             completeFunc = func;
 
-         };
 
- 		
 
- 		this.onFailure = function(func) {
 
-             failureFunc = func;
 
-         };
 
-         this.add = function(func) {
 
- 			// TODO: add callback for queue[i] complete
 
- 			
 
- 			var obj = arguments[0];
 
- 			if (obj && Object.prototype.toString.call(obj) === "[object Array]") {
 
- 				var fn = arguments[1];
 
- 				var timeOut = (typeof(arguments[2]) != "undefined")? arguments[2] : defaultTimeOut;
 
- 				if (typeof(fn) == "function") {
 
- 					for(var i = 0; i < obj.length; i++) {
 
- 						var f = function(objx){
 
- 							queue.push({isParallel: true, fn: function(){fn.apply(that, [that, objx]);}, timeOut: timeOut});
 
- 						}(obj[i])
 
- 					}
 
- 				}
 
- 			} else {
 
- 				var fn = arguments[0];
 
- 				var timeOut = (typeof(arguments[1]) != "undefined")? arguments[2] : defaultTimeOut;
 
- 				queue.push({isParallel: false, fn: func, timeOut: timeOut});
 
- 			}
 
-             return this;
 
-         };
 
- 		
 
- 		this.addParallel = function(func, timeOut) {
 
- 			// TODO: add callback for queue[i] complete
 
- 			
 
-             queue.push({isParallel: true, fn: func, timeOut: timeOut});
 
-             return this;
 
-         };
 
-         this.storeData = function(dataObject) {
 
-             lastCallbackData = dataObject;
 
-             return this;
 
-         };
 
-         this.lastCallbackData = function () {
 
-             return lastCallbackData;
 
-         };
 
-         this.run = function() {
 
-             paused = false;
 
-             _run();
 
-         };
 
-         this.pause = function () {
 
-             paused = true;
 
-             return this;
 
-         };
 
-         this.failure = function() {
 
-             paused = true;
 
-             if (failureFunc) {
 
-                 var args = [that];
 
-                 for(i = 0; i < arguments.length; i++) {
 
-                     args.push(arguments[i]);
 
-                 }
 
-                 failureFunc.apply(that, args);
 
-             }
 
-         };
 
- 		
 
- 		this.size = function(){
 
- 			return queue.length;
 
- 		};
 
-         return this;
 
-     }
 
- })(jQuery);
 
 
  |