
smashion.xui.MoreLessAjax=Class.create(smashion.common.global.AjaxHandler,{initialize:function(control,container,url,options){this.control=$(control);this.container=$(container);this.url=url;this.gotContent=(this.url==null);this.options=Object.extend({moreText:"[+]",lessText:"[-]",moreImage:"/images/icons/icons/icon_arrow_right.png",lessImage:"/images/icons/icons/icon_arrow_down.png",useImage:true,linkClass:"",initiallyHidden:false,showTransition:false,params:{}},options||{});this.initUI();},initUI:function(){this.link=new Element("a",{href:"javascript:void(0)","class":this.options.linkClass});Event.observe(this.link,'click',this.onclick.bindAsEventListener(this));this.control.update();this.control.appendChild(this.link);if(this.gotContent&&!this.options.initiallyHidden){this.show();}else{this.hide();}},onclick:function(event){if(this.container.visible()){this.hide();}else{this.expand();}},expand:function(){if(this.gotContent){this.show();}else{var req=new Ajax.Request(this.url,{method:"post",parameters:this.options.params,onSuccess:this.updateContent.bind(this)});}},updateContent:function(transport,json){if(!this.validateResponse(json)){return;}
this.clearStatus();this.container.update(json.body);this.gotContent=true;this.show();},show:function(){if(this.options.showTransition){Effect.BlindDown(this.container.identify(),{scaleContent:false});}else{this.container.show();}
if(this.options.useImage){this.link.update();var img=new Element("img",{"style":"vertical-align:middle",src:this.options.lessImage});this.link.appendChild(img);}else{this.link.update();this.link.appendChild(document.createTextNode(this.options.lessText));}},hide:function(){if(this.options.showTransition){Effect.BlindUp(this.container.identify(),{scaleContent:false});}else{this.container.hide();}
if(this.options.useImage){this.link.update();var img=new Element("img",{"style":"vertical-align:middle",src:this.options.moreImage});this.link.appendChild(img);}else{this.link.update();this.link.appendChild(document.createTextNode(this.options.moreText));}},dispose:function(){}})
