
smashion.xui.RemoteAction=Class.create(smashion.common.global.AjaxHandler,{initialize:function(control,container,url,options){this.control=$(control);this.container=$(container);this.url=url.replace(/amp;/g,"");this.options=Object.extend({showConfirm:true,confirmationPrompt:'Are you sure?',submitText:'Yes',cancelText:'No',progressText:'working ...',errorClass:null,onClickControl:function(control){},onClickSubmit:function(){},onClickCancel:function(control){},onSuccessCallback:function(json){}},options||{});if(this.options.showConfirm){this.createStatus(this.container);}
this.confirmation=null;Event.observe(this.control,"click",this.btnActionClick.bindAsEventListener(this));},btnActionClick:function(evt){this.options.onClickControl(this.control);if(this.container){this.container.show();}
if(this.options.showConfirm){this.removeConfirmation();this.confirmation=new Element("span",{id:"raconf$"+Math.floor(Math.random()*99999),"class":"raPrompt"});this.confirmation.appendChild(document.createTextNode(this.options.confirmationPrompt));var yesLink=document.createElement("a");yesLink.href="javascript:void(0);";yesLink.style.marginLeft="5px";yesLink.appendChild(document.createTextNode(this.options.submitText));yesLink.onclick=this.doAction.bind(this);this.confirmation.appendChild(yesLink);var cancelLink=document.createElement("a");cancelLink.href="javascript:void(0);";cancelLink.style.marginLeft="5px";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick=this.doCancel.bind(this);this.confirmation.appendChild(cancelLink);this.container.appendChild(this.confirmation);}else{this.doAction();}
if(evt){Event.stop(evt);}
return false;},removeConfirmation:function(){if(this.confirmation){if(this.confirmation.parentNode){Element.remove(this.confirmation);}
this.confirmation=null;}},doAction:function(){this.removeConfirmation();Element.hide(this.control);this.options.onClickSubmit();this.showProgress();var req=new Ajax.Request(this.url,{method:"post",onSuccess:this.onSuccess.bind(this),onFailure:this.handleAjaxFailure.bind(this),onException:this.handleAjaxException.bind(this)});return false;},onSuccess:function(transport,json){if(this.validateResponse(json)){this.clearStatus();this.options.onSuccessCallback.bind(this)(json);}},doCancel:function(){this.removeConfirmation();if(this.container){this.container.hide();}
this.options.onClickCancel(this.control);return false;},dispose:function(){}})
