var SessionController=new Class({Implements:Events,status:"init",vars:{},initialize:function(a){if(a){for(prop in a){this.vars[prop]=a[prop]}}this.refresh();this.fireEvent(this.status)},set:function(d,b,c){if(d!="vars"&&d!="status"&&d!="$events"){this.status="set";this.fireEvent(this.status);this[d]=b;this.vars[d]=this[d];var a='{"'+d+'":"'+b+'"}';this.set_callback=(c)?c:undefined;this.set_func=function(e){this.status="set-complete";this.fireEvent(this.status);this.refresh(this.set_callback);this.set_callback=undefined;this.removeEvent("set-complete",this.set_func)}.bind(this);this.session_setter=new Request.JSON({url:"/session/set"});this.session_setter.addEvent("complete",this.set_func);this.session_setter.send("q="+a);return b}else{return null}},get:function(a){if(this.vars[a]){return this.vars[a]}else{return null}},remove:function(prop,callback){if(this.vars[prop]&&prop!="vars"&&prop!="status"&&prop!="$events"){delete this[prop];with(this){delete vars[prop]}var query=prop;this.remove_callback=(callback)?callback:undefined;this.delete_func=function(response){this.status="del-complete";this.fireEvent(this.status);this.refresh(this.remove_callback);this.remove_callback=undefined;this.removeEvent("del-complete",this.delete_func)}.bind(this);this.session_deleter=new Request.JSON({url:"/session/delete"});this.session_deleter.addEvent("complete",this.delete_func);this.session_deleter.send("q="+query);return true}else{return false}},reset:function(c,b){var a=new Request.JSON({url:"/session/reset"});this.reset_callback=(b)?b:undefined;this.reset_func=function(d){this.status="reset-complete";this.fireEvent(this.status);this.refresh(this.reset_callback);this.reset_callback=undefined;this.removeEvent("reset-complete",this.reset_func)}.bind(this);this.session_reset.addEvent("complete",this.reset_func);this.session_reset.send()},refresh:function(callback){if(this.status!="init"){this.status="refresh"}this.refresh_callback=(callback)?callback:undefined;this.fireEvent(this.status);this.refresh_func=function(response){for(prop in this.vars){delete this[prop];with(this){delete vars[prop]}}for(prop in response){this[prop]=response[prop];this.vars[prop]=response[prop]}if(this.status=="init"){this.status="init-complete"}else{this.status="refresh-complete"}this.fireEvent(this.status);if(this.refresh_callback){this.refresh_callback();this.refresh_callback=undefined}this.removeEvent(this.status,this.refresh_func)}.bind(this);this.session_refresh=new Request.JSON({url:"/session/refresh"});this.session_refresh.addEvent("complete",this.refresh_func);this.session_refresh.send("q="+JSON.encode(this.vars))}});
