(function(b){b.extend({manageAjax:function(a){a=b.extend({manageType:"normal",maxReq:0,blockSameRequest:false,global:true},a);return new b.ajaxManager(a)},ajaxManager:function(a){this.opt=a;this.queue=[]}});b.extend(b.ajaxManager.prototype,{add:function(o){var n=this.queue.length,q=this.opt,p=this.queue,r=this,i,j;o=b.extend({},q,o);var a=(o.data&&typeof o.data!="string")?b.param(o.data):o.data;if(q.blockSameRequest){var s=false;for(i=0;i<n;i++){if(p[i]&&p[i].data===a&&p[i].url===o.url&&p[i].type===o.type){s=true;break}}if(s){return false}}p[n]={fnError:o.error,fnSuccess:o.success,fnComplete:o.complete,fnAbort:o.abort,error:[],success:[],complete:[],done:false,queued:false,data:a,url:o.url,type:o.type,xhr:null};o.error=function(){if(p[n]){p[n].error=arguments}};o.success=function(){if(p[n]){p[n].success=arguments}};o.abort=function(){if(p[n]){p[n].abort=arguments}};function t(d,c){if(p[d].fnError&&p[d].error.length){p[d].fnError.apply(c||b,p[d].error)}if(p[d].fnSuccess){p[d].fnSuccess.apply(c||b,p[d].success)}if(p[d].fnComplete){p[d].fnComplete.apply(c||b,p[d].complete)}r.abort(d,true)}o.complete=function(){if(!p[n]){return}p[n].complete=arguments;p[n].done=true;switch(q.manageType){case"sync":if(n===0||!p[n-1]){var c=p.length;for(i=n;i<c;i++){if(p[i]){if(p[i].done){t(i,this)}else{break}}}}break;case"queue":if(n===0||!p[n-1]){var c=p.length;for(i=0,j=0;i<c;i++){if(p[i]&&p[i].queued){p[i].xhr=jQuery.ajax(p[i].xhr);p[i].queued=false;break}}}t(n,this);break;case"abortOld":t(n,this);for(i=n;i>=0;i--){if(p[i]){r.abort(i)}}break;default:t(n,this);break}};if(q.maxReq){if(q.manageType!="queue"){for(i=n,j=0;i>=0;i--){if(j>=q.maxReq){this.abort(i)}if(p[i]){j++}}}else{for(i=0,j=0;i<=n&&!p[n].queued;i++){if(p[i]&&!p[i].queued){j++}if(j>q.maxReq){p[n].queued=true}}}}p[n].xhr=(p[n].queued)?o:jQuery.ajax(o);return n},cleanUp:function(){this.queue=[]},abort:function(n,p){var q=this.queue.length,a=this.opt,r=this.queue,i=this,o;function l(c){if(!r[c]){return}((!p&&r[c].fnAbort)&&r[c].fnAbort.apply(b,[c]));if(!r[c]){return}if(r[c].xhr){if(typeof r[c].xhr.abort!="undefined"){r[c].xhr.abort()}if(typeof r[c].xhr.close!="undefined"){r[c].xhr.close()}r[c].xhr=null}if(a.global&&b.active&&!--b.active){b.event.trigger("ajaxStop")}r[c]=null}if(!n&&n!==0){for(o=0;o<q;o++){l(o)}this.cleanUp()}else{l(n);var m=true;for(o=q;o>=0;o--){if(r[o]){m=false;break}}if(m){this.cleanUp()}}}})})(jQuery);