
Ajax.JSON=Class.create(Ajax.Request,{initialize:function($super,url,options){options=options||{};options.method='post';options.contentType='application/json';options.postBody=Object.toJSON(options.object);$super(url,options);}});var Request=Class.create({initialize:function(communicator,url,requestObj,options){this.communicator=communicator;var defaults={JSON:false,asynchronous:true,evalScripts:true,requestHeaders:{Accept:'text/x-json'},evalJS:false,sanitizeJSON:true,onComplete:null}
this.url=url;this.requestObj=requestObj;this.options=Object.extend(defaults,options||{});this.completed=false;},perform:function(){if(!this.options.JSON){new Ajax.Request(this.url+this.requestObj,{asynchronous:this.options.asynchronous,evalScripts:this.options.evalScripts,requestHeaders:this.options.requestHeaders,evalJS:this.options.evalJS,onComplete:this.callback.bindAsEventListener(this)});}else{new Ajax.JSON(this.url,{object:this.requestObj,asynchronous:this.options.asynchronous,evalScripts:this.options.evalScripts,requestHeaders:this.options.requestHeaders,evalJS:this.options.evalJS,sanitizeJSON:this.options.sanitizeJSON,onComplete:this.callback.bindAsEventListener(this)});}},callback:function(request){if(this.options.onComplete!=null){this.options.onComplete((this.communicator.checkResponse(request)?request:false));}
this.completed=true;}})
var Communicator=Class.create({initialize:function(){this.requests=new Array();this.unloading_page=false;},sendRequest:function(url,requestObj,options){if((BrowserDetect.browser=="Safari")&&(this.unloading_page)){options.asynchronous=false;}
var req=new Request(this,url,requestObj,options);this.requests.push(req)
req.perform();},checkResponse:function(request){return true;},set_unloading_page:function(unloading_page){this.unloading_page=unloading_page;},checkResponseFromServer:function(){var request=arguments[0].request;var refreshOnLogout=typeof arguments[0].refreshOnLogout!='undefined'?arguments[0].refreshOnLogout:false;var redirectToHomepageOnLogin=typeof arguments[0].redirectToHomepageOnLogin!='undefined'?arguments[0].redirectToHomepageOnLogin:true;var tabDialog=typeof arguments[0].tabDialog!='undefined'?arguments[0].tabDialog:pageTabs.tabDialog;var callbackOnApplicationError=typeof arguments[0].callbackOnApplicationError!='undefined'?arguments[0].callbackOnApplicationError:tabDialog.hideDialog.bind(tabDialog);var callbackOnSystemError=typeof arguments[0].callbackOnSystemError!='undefined'?arguments[0].callbackOnSystemError:generalReloadPage.bind();var forceRefreshCallback=typeof arguments[0].forceRefreshCallback!='undefined'?arguments[0].forceRefreshCallback:(typeof pageTabs.forceRefresh!='undefined'?pageTabs.forceRefresh.bind(pageTabs):generalReloadPage.bind());var forceLogoutCallback=typeof arguments[0].forceLogoutCallback!='undefined'?arguments[0].forceLogoutCallback:(typeof pageTabs.forceLogout!='undefined'?pageTabs.forceLogout.bind(pageTabs):tabDialog.hideDialog.bind(tabDialog));var startLoginCallback=typeof arguments[0].startLoginCallback!='undefined'?arguments[0].startLoginCallback:(typeof pageTabs.startLogin!='undefined'?pageTabs.startLogin.bind(pageTabs,{redirectToHomepage:redirectToHomepageOnLogin}):tabDialog.hideDialog.bind(tabDialog));var error=false
var title=null;var actions=null;var description=null;var actionOK=null;var size='big';if(request.status=='200'){if(typeof(request.responseJSON)!='undefined'&&request.responseJSON!=null){response=request.responseJSON;if(response.status.action_result=='OK'){error=false;}else{error=true;title='warning';description=response.status.message;actions='1button';actionOK=generalReloadPage.bindAsEventListener();if(typeof response.status.action_to_perform!='undefined'&&response.status.action_to_perform!=null){switch(response.status.action_to_perform){case'logout!':title='halt';size='small';if(refreshOnLogout){actionOK=forceRefreshCallback;}else{actionOK=forceLogoutCallback;}
break;case'login!':actionOK=startLoginCallback;break;case'reload':title='halt';size='small';actionOK=forceRefreshCallback;break;case'show_dialog_avvisi':title='halt';size='small';actionOK=pageTabs.showDialogAvvisi({force:true,userId:response.content.id})
break;default:title='halt';size='small';actionOK=callbackOnApplicationError;}}else{actionOK=callbackOnApplicationError;}}}else{if(request.statusText=='OK'){error=false;}else{error=true;title='warning';description="ERROR OCCURRED";actions='1button';actionOK=callbackOnApplicationError;}}}else{error=true;title='halt';description=i18n.stringLocale('problema_server_prova_1_minuto','dialog');actions='1button';actionOK=callbackOnSystemError;size='small'}
if(!error){return true;}else{tabDialog.displayMessage({title:title,description:description||i18n.stringLocale('problema_server_prova_1_minuto','dialog'),actions:actions,actionOK:actionOK,size:size})
tabDialog.showDialog();return false;}}});