Pomona=SC.Object.create({NAMESPACE:"Pomona",VERSION:"0.1.0",Firenze:SC.Object.extend({host:document.domain,prefix:"comet/",port:4020,protocol:"http",crossPort:YES,connectUrl:"/server/connect/%@",disconnectUrl:"/server/disconnect/%@",init:function(){if(this.crossPort){document.domain=document.domain
}this._attachments={};this._reconnectWith="";this._uid="NONE";this._beginNextRequest()
},getDoloresId:function(){return(this._uid=="NONE"?null:this._uid)},_beginNextRequest:function(){this.timer=undefined;
var b="";if(this.host.length!==0){b=this.protocol+"://"+this.host+":"+this.port}var a=b+"/"+this.prefix+this._reconnectWith;
SC.Request.getUrl(a).json().notify(this,"_receive").send()},_receive:function(c){var g=false;
var b=c.get("body");if(b){this._reconnectWith=b.reconnectWith;if(this._reconnectWith&&this._reconnectWith.trim().length>0){var e=this._reconnectWith.split("/")[0];
if(e!=this._uid){g=true;this._uid=e;this._establishConnections()}}else{this._uid="NONE"
}var f=b.updates;if(f){var d=0,a=f.length;for(d=0;d<a;d++){this.update(f[d].path,f[d].message)
}SC.Timer.schedule({target:this,action:"_beginNextRequest",interval:5000});return
}}if(this.timer){this.timer.invalidate()}this.timer=SC.Timer.schedule({interval:1000,target:this,action:"_beginNextRequest"})
},_establishConnections:function(){var a=this._attachments;var b=[];for(var c in a){b.push(c)
}this.requestAttachments(b)},requestAttachments:function(c){var b=this.connectUrl;
var a=b.fmt(this._uid);SC.Request.postUrl(a).json().notify(this,"_didConnect",c).send(c)
},requestDetachments:function(b){var c=this.disconnectUrl;var a=c.fmt(this._uid);
SC.Request.postUrl(a).json().notify(this,"_didDisconnect",b).send(b)},_didConnect:function(a,b){},update:function(c,b){if(!this._attachments[c]){return
}var a=this._attachments[c].first;while(a){if(SC.typeOf(a.action)==SC.T_STRING){a.target[a.action].call(a.target,c,b)
}else{a.action.call(a.target,c,b)}a=a.next}},_hashFor:function(c,a){var b=SC.guidFor(c);
if(SC.typeOf(a)==SC.T_STRING){b+="::"+a}else{b+=SC.guidFor(a)}return b},_attach:function(a){if(this._uid&&this._uid!=="NONE"){this.requestAttachments([a])
}this._attachments[a]={first:null,set:{},length:0}},_detach:function(a){if(this._uid&&this._uid!=="NONE"){this.requestDetachments([a])
}delete this._attachments[a]},connect:function(e,d,b){var c=this._hashFor(d,b);if(!this._attachments[e]){this._attach(e)
}var g=this._attachments[e];if(g.set[c]){return}var f=g.first;var a={target:d,action:b,previous:null,next:g.first};
if(g.first){g.first.previous=a}g.first=a;g.length+=1;g.set[c]=a},disconnect:function(e,d,b){var c=this._hashFor(d,b);
if(!this._attachments[e]){return}var f=this._attachments[e];var a=f.set[c];if(f.first===a){f.first=a.next
}if(a.previous){a.previous.next=a.next}if(a.next){a.next.previous=a.previous}delete f.set[c];
f.length-=1;if(f.length<=0){this._detach(e)}}})});if((typeof SC!=="undefined")&&SC&&SC.bundleDidLoad){SC.bundleDidLoad("pomona")
};
