var JsonP=new Class({Implements:[Options,Events],options:{callBackKey:"callback",queryString:"",data:{},timeout:5000,retries:0},initialize:function(B,A){this.setOptions(A);this.url=this.makeUrl(B).url;this.fired=false;this.complete=true;this.scripts=[];this.requests=0;this.triesRemaining=[]},request:function(C,E){var B=this.makeUrl(C);if(!$chk(E)){E=this.requests;this.requests++}if(!$chk(this.triesRemaining[E])){this.triesRemaining[E]=this.options.retries}var D=this.triesRemaining[E];var A=(Browser.Engine.trident)?50:0;(function(){var F=new Element("script",{src:B.url,type:"text/javascript",id:"jsonp_"+B.index+"_"+E});this.fired=true;this.addEvent("onComplete",function(){if(!Browser.Engine.trident){try{F.dispose()}catch(G){}}}.bind(this));F.inject(document.head);if(D){(function(){if(!this.complete){this.triesRemaining[E]=D-1;if(F.getParent()&&D){F.dispose();this.request(C,E)}}}).delay(this.options.timeout,this)}else{(function(){if(!this.complete){if(F.getParent()){F.dispose();this.fireEvent("onTimeout")}}}).delay(this.options.timeout,this)}}.bind(this)).delay(A);return this},makeUrl:function(B){var A;if(JsonP.requestors.contains(this)){A=JsonP.requestors.indexOf(this)}else{A=JsonP.requestors.push(this)-1;JsonP.requestors["request_"+A]=this}if(B){var D=(B.test("\\?"))?"&":"?";var C=B+D+this.options.callBackKey+"=JsonP.requestors.request_"+A+".handleResults";if(this.options.queryString){C+="&"+this.options.queryString}C+="&"+Hash.toQueryString(this.options.data)}else{var C=this.url}return{url:C,index:A}},handleResults:function(A){this.complete=true;this.fireEvent("onComplete",[A,this])}});JsonP.requestors=[];