(function(c){var b={},a={};c.manageAjax=(function(){function d(f,g){b[f]=new c.manageAjax._manager(f,g);return b[f]}var e={create:d};return e})();c.manageAjax._manager=function(d,e){this.requests={};this.inProgress=0;this.name=d;this.qName=d;this.opts=c.extend({},c.ajaxSettings,c.manageAjax.defaults,e);if(e.queue&&e.queue!==true&&typeof e.queue==="string"&&e.queue!=="clear"){this.qName=e.queue}};c.manageAjax._manager.prototype={add:function(d){d=c.extend({},this.opts,d);var g=d.complete,f=d.success,j=d.beforeSend,h=d.error,l=(typeof d.data=="string")?d.data:c.param(d.data||{}),k=d.type+d.url+l,i=this,e=this._createAjax(k,d,f,g);if(this.requests[k]&&d.preventDoubbleRequests){return}e.xhrID=k;d.xhrID=k;d.beforeSend=function(o,n){var m=j.call(this,o,n);if(m===false){i._removeXHR(k)}o=null;return m};d.complete=function(n,m){i._complete.call(i,this,g,n,m,k,d);n=null};d.success=function(n,m,o){i._success.call(i,this,f,n,m,o,d);o=null};d.error=function(n,m,q){n=(n||{});var o=n.status,p=n.responseXML||n.responseText;if(h){h.call(this,n,m,q,d)}else{setTimeout(function(){throw m+":: status: "+o+" | URL: "+d.url+" | data: "+l+" | thrown: "+q+" | response: "+p},0)}n=null};if(d.queue==="clear"){c(document).clearQueue(this.qName)}if(d.queue){c.queue(document,this.qName,e);if(this.inProgress<d.maxRequests){c.dequeue(document,this.qName)}return k}return e()},_createAjax:function(h,g,f,d){var e=this;return function(){if(g.beforeCreate.call(g.context||e,h,g)===false){return}e.inProgress++;if(g.cacheResponse&&a[h]){e.requests[h]={};setTimeout(function(){e._complete.call(e,g.context||g,d,{},"success",h,g);e._success.call(e,g.context||g,f,a[h],"success",{},g)},0)}else{e.requests[h]=c.ajax(g)}if(e.inProgress===1){c.event.trigger(e.name+"AjaxStart")}return h}},_removeXHR:function(d){if(this.opts.queue){c.dequeue(document,this.qName)}this.inProgress--;this.requests[d]=null;delete this.requests[d]},_isAbort:function(f,e){var d=!!(e.abortIsNoSuccess&&(!f||f.readyState===0||this.lastAbort===e.xhrID));f=null;return d},_complete:function(e,i,h,d,f,g){if(this._isAbort(h,g)){d="abort";g.abort.call(e,h,d,g)}i.call(e,h,d,g);c.event.trigger(this.name+"AjaxComplete",[h,d,g]);if(g.domCompleteTrigger){c(g.domCompleteTrigger).trigger(this.name+"DOMComplete",[h,d,g]).trigger("DOMComplete",[h,d,g])}this._removeXHR(f);if(!this.inProgress){c.event.trigger(this.name+"AjaxStop")}h=null},_success:function(e,j,g,d,i,h){var f=this;if(this._isAbort(i,h)){i=null;return}if(h.abortOld){c.each(this.requests,function(k){if(k===h.xhrID){return false}f.abort(k)})}if(h.cacheResponse&&!a[h.xhrID]){a[h.xhrID]=g}j.call(e,g,d,i,h);c.event.trigger(this.name+"AjaxSuccess",[i,h,g]);if(h.domSuccessTrigger){c(h.domSuccessTrigger).trigger(this.name+"DOMSuccess",[g,h]).trigger("DOMSuccess",[g,h])}i=null},getData:function(e){if(e){var d=this.requests[e];if(!d&&this.opts.queue){d=c.grep(c(document).queue(this.qName),function(g,f){return(g.xhrID===e)})[0]}return d}return{requests:this.requests,queue:(this.opts.queue)?c(document).queue(this.qName):[],inProgress:this.inProgress}},abort:function(g){var f;if(g){f=this.getData(g);if(f&&f.abort){this.lastAbort=g;f.abort();this.lastAbort=false}else{c(document).queue(this.qName,c.grep(c(document).queue(this.qName),function(j,h){return(j!==f)}))}f=null;return}var e=this,d=[];c.each(this.requests,function(h){d.push(h)});c.each(d,function(h,j){e.abort(j)})},clear:function(d){c(document).clearQueue(this.qName);if(d){this.abort()}}};c.manageAjax._manager.prototype.getXHR=c.manageAjax._manager.prototype.getData;c.manageAjax.defaults={complete:c.noop,success:c.noop,beforeSend:c.noop,beforeCreate:c.noop,abort:c.noop,abortIsNoSuccess:true,maxRequests:1,cacheResponse:false,domCompleteTrigger:false,domSuccessTrigger:false,preventDoubbleRequests:true,queue:false};c.each(c.manageAjax._manager.prototype,function(e,d){if(e.indexOf("_")===0||!c.isFunction(d)){return}c.manageAjax[e]=function(g,h){if(!b[g]){if(e==="add"){c.manageAjax.create(g,h)}else{return}}var f=Array.prototype.slice.call(arguments,1);b[g][e].apply(b[g],f)}})})(jQuery);
