/** * Ajax Queue Plugin * * Homepage: http://jquery.com/plugins/project/ajaxqueue * Documentation: http://docs.jquery.com/AjaxQueue */ /** */ /* * Queued Ajax requests. * A new Ajax request won't be started until the previous queued * request has finished. */ jQuery.ajaxQueue = function(o){ var _old = o.complete; o.complete = function(){ if ( _old ) _old.apply( this, arguments ); jQuery.dequeue( jQuery.ajaxQueue, "ajax" ); }; jQuery([ jQuery.ajaxQueue ]).queue("ajax", function(){ jQuery.ajax( o ); }); }; /* * Synced Ajax requests. * The Ajax request will happen as soon as you call this method, but * the callbacks (success/error/complete) won't fire until all previous * synced requests have been completed. */ jQuery.ajaxSync = function(o){ var fn = jQuery.ajaxSync.fn, data = jQuery.ajaxSync.data, pos = fn.length; fn[ pos ] = { error: o.error, success: o.success, complete: o.complete, done: false }; data[ pos ] = { error: [], success: [], complete: [] }; o.error = function(){ data[ pos ].error = arguments; }; o.success = function(){ data[ pos ].success = arguments; }; o.complete = function(){ data[ pos ].complete = arguments; fn[ pos ].done = true; if ( pos == 0 || !fn[ pos-1 ] ) for ( var i = pos; i < fn.length && fn[i].done; i++ ) { if ( fn[i].error ) fn[i].error.apply( jQuery, data[i].error ); if ( fn[i].success ) fn[i].success.apply( jQuery, data[i].success ); if ( fn[i].complete ) fn[i].complete.apply( jQuery, data[i].complete ); fn[i] = null; data[i] = null; } }; return jQuery.ajax(o); }; jQuery.ajaxSync.fn = []; jQuery.ajaxSync.data = [];