
smashion.xui.ListTags=Class.create(smashion.common.global.AjaxHandler,{initialize:function(container,type,tagUrl,options){this.container=$(container);this.type=type;this.tagUrl=tagUrl;this.options=Object.extend({startPage:1,viewParams:{},render:"list",prevLinkText:"previous",prevLinkClass:"viewtagsup",nextLinkText:"next",nextLinkClass:"viewtagsdown",tagParamName:"tagId",tagParamValue:"id"},options||{});this.fetchPage(null,this.options.startPage);},fetchPage:function(event,pageNo){var req=new Ajax.Request(smashion.server.viewTags,{parameters:Object.extend(this.options.viewParams,{"type":this.type,"tpn":pageNo}),method:"post",onSuccess:this.fetchPageCallback.bind(this),onFailure:this.handleAjaxFailure.bind(this),onException:this.handleAjaxException.bind(this)});},fetchPageCallback:function(transport,json){if(!this.validateResponse(json)){return;}
this.clearStatus();if(this.options.render=="list"){this.renderList(json.body.paginator,json.body.items);}else if(this.options.render=="cloud"){this.renderCloud(json.body.paginator,json.body.items);}},renderList:function(paginator,tags){this.container.update();if(paginator.hasPrevPage){var a=new Element("a",{"class":this.options.prevLinkClass,href:"javascript:void(0)"}).update(this.options.prevLinkText);Event.observe(a,"click",this.fetchPage.bindAsEventListener(this,paginator.prevPage));this.container.appendChild(a);}
var ul=new Element("ul");for(var i=0,len=tags.length;i<len;i++){var taga=this._createTagLink(tags[i]);var ctxt=this._createTagCount(tags[i]);var li=new Element("li");li.appendChild(taga);li.appendChild(document.createTextNode(ctxt));ul.appendChild(li);}
this.container.appendChild(ul);if(paginator.hasNextPage){this.container.appendChild(this._createNextLink(paginator));}},renderCloud:function(paginator,tags){var tcwrap=new Element("div");var tccloud=new Element("div",{"class":"tagcloud"});for(var i=0,len=tags.length;i<len;i++){var taga=this._createTagLink(tags[i]);var ctxt=this._createTagCount(tags[i]);var entry=new Element("span",{"class":"tca"});entry.appendChild(taga);entry.appendChild((new Element("span",{"class":"tcc"})).update(ctxt));entry.appendChild(document.createTextNode(" "));tccloud.appendChild(entry);}
tcwrap.appendChild(tccloud);var tcnav=new Element("div",{"class":"tagcloudnav"});if(paginator.hasPrevPage){var a=this._createPrevLink(paginator);tcnav.appendChild(a);}
if(paginator.hasNextPage){if(paginator.hasPrevPage){tcnav.appendChild(document.createTextNode(" | "));}
var a=this._createNextLink(paginator);tcnav.appendChild(a);}
tcwrap.appendChild(tcnav);this.container.update(tcwrap);},_createTagLink:function(atag){var tagUrlParam;if(this.tagUrl.indexOf("?")<0){tagUrlParam="?";}else{tagUrlParam="&";}
tagUrlParam+=this.options.tagParamName;tagUrlParam+="=";if(this.options.tagParamName=="tagId"){tagUrlParam+=atag.a;}else{tagUrlParam+=atag.b;}
var a=new Element('a',{href:this.tagUrl+tagUrlParam}).update(atag.b);return a;},_createTagCount:function(atag){return" ("+atag.c+")";},_createPrevLink:function(paginator){var a=new Element("a",{"class":this.options.prevLinkClass,href:"javascript:void(0)"}).update(this.options.prevLinkText);Event.observe(a,"click",this.fetchPage.bindAsEventListener(this,paginator.prevPage));return a;},_createNextLink:function(paginator){var a=new Element("a",{"class":this.options.nextLinkClass,href:"javascript:void(0)"}).update(this.options.nextLinkText);Event.observe(a,"click",this.fetchPage.bindAsEventListener(this,paginator.nextPage));return a;},dispose:function(){}})