var AjaxJspTag={Version:"1.3",tags:[],add:function(a){AjaxJspTag.tags.push(a)},remove:function(a){AjaxJspTag.tags=AjaxJspTag.tags.without(a)},reload:function(){AjaxJspTag.tags.each(AjaxJspTag.fireListener)},fireListener:function(a){if(Object.isFunction(a.setListeners)){a.setListeners()}},parseBoolean:function(a){if(a!==null&&Object.isString(a)){return("true"==a.toLowerCase()||"yes"==a.toLowerCase())}else{return(a&&true)}}};var AJAX_DEFAULT_PARAMETER="ajaxParameter";var AJAX_DEFAULT_PARAMETER_REGEXP=new RegExp("(\\{"+AJAX_DEFAULT_PARAMETER+"\\})","g");var AJAX_VOID_URL="javascript://nop";var AJAX_PORTLET_MAX=1;var AJAX_PORTLET_MIN=2;var AJAX_PORTLET_CLOSE=3;var AJAX_CALLOUT_OVERLIB_DEFAULT="STICKY,CLOSECLICK,DELAY,250,TIMEOUT,5000,VAUTO,WRAPMAX,240,CSSCLASS,FGCLASS,'olfg',BGCLASS,'olbg',CGCLASS,'olcg',CAPTIONFONTCLASS,'olcap',CLOSEFONTCLASS,'olclo',TEXTFONTCLASS,'oltxt'";var DefaultResponseParser=Class.create({initialize:function(b,a){this.type=b||"xml";this.plaintext=false;if(arguments.length>=2){this.plaintext=(a&&true)}this.content=null;this.contentText=null;this.contentXML=null},load:function(a){this.contentText=a.responseText;this.contentXML=a.responseXML;this.content=null;this.parse()},parse:function(z){var o=this.type;var a=null;if(arguments.length>=1){this.type=z}if(this.type=="xml"){var u=this.contentXML.documentElement;var t=u.getElementsByTagName("response");a=[];var x=0,w=0,v=0,g=t.length,e=null,c=null;var p=null,r=null,b=null,q=null;var h,y,s,d;for(x=0;x<g;x++){s=t[x];q=s.getElementsByTagName("item");e=q.length;for(w=0;w<e;w++){h=q[w];p=h.getElementsByTagName("name");r=h.getElementsByTagName("value");b=[];c=p.length;for(v=0;v<c;v++){y=p[v];b.push(y.firstChild?y.firstChild.nodeValue:"")}if(b.length!=1){throw new Error("XML is not supported")}c=r.length;for(v=0;v<c;v++){d=r[v];b.push(d.firstChild?d.firstChild.nodeValue:"")}a.push(b)}}}else{if(this.type=="plain"){a=this.contentText}else{if(this.type=="text"){a=[];this.contentText.split("\n").each(function(i){a.push(i.split(","))})}else{if(this.type=="html"){a=this.contentText}else{if(this.type=="xmltohtml"){this.parse("xml");a=new Element("div");var n=null,f=null;this.content.each(function(i){f=new Element("h1");if(!this.plaintext){f.innerHTML+=i[0]}else{f=f.update(i[0])}a.appendChild(f);i.without(i[0]).each(function(j){n=new Element("div");if(!this.plaintext){n.innerHTML+=j}else{n.update(j)}a.appendChild(n)})});a=(f!==null)?a.innerHTML:""}else{if(this.type=="xmltohtmllist"){this.parse("xml");a=new Element("div");var l=new Element("ul");var m=null;this.content.each(function(i){m=new Element("li");m.id=i[1];if(this.plaintext){m.update(i[0])}else{m.innerHTML=i[0]}l.appendChild(m)});a.appendChild(l);a=(m!==null)?a.innerHTML:""}}}}}}this.content=a;this.type=o}});var ResponseXmlToHtmlLinkListParser=Class.create(DefaultResponseParser,{initialize:function($super){$super("xmltohtmllinklist")},load:function($super,a){this.collapsedClass=a.collapsedClass;this.treeClass=a.treeClass;this.nodeClass=a.nodeClass;this.expandedNodes=[];$super(a)},parse:function(){var m=this.contentXML.documentElement.getElementsByTagName("response");if(m.length>0){var a=m[0].getElementsByTagName("item");var h=(a.length===0)?null:new Element("ul");if(h){h.addClassName(this.treeClass)}var k=null,l=null,o=null,s=null,d=null;var u=null,n=null,c=null,b=false,t=false;var g=null,q=null,p=null,e=null,j=null,r=a.length;var f=null;for(q=0;q<r;q++){f=a[q];k=f.getElementsByTagName("name");l=f.getElementsByTagName("value");o=f.getElementsByTagName("url");s=f.getElementsByTagName("collapsed");d=a[q].getElementsByTagName("leaf");if(k.length>0&&l.length>0){u=k[0].firstChild.nodeValue;n=l[0].firstChild.nodeValue;c=(o.length>0)?o[0].firstChild.nodeValue:AJAX_VOID_URL;t=(d.length>0)&&AjaxJspTag.parseBoolean(d[0].firstChild.nodeValue);b=(s.length>0)&&AjaxJspTag.parseBoolean(s[0].firstChild.nodeValue);g=new Element("li");g.id="li_"+n;if(!t){p=new Element("span");p.id="span_"+n;p.addClassName(this.collapsedClass);g.appendChild(p)}e=new Element("a").update(u);e.href=c;e.addClassName(this.nodeClass);j=new Element("div");j.id=n;j.hide();if(!b){this.expandedNodes.push(n)}g.appendChild(e);g.appendChild(j);h.appendChild(g)}}this.content=h}}});AjaxJspTag.Base=Class.create({resolveParameters:function(){var c=this.options;if(c.baseUrl===null||Object.isUndefined(c.baseUrl)||c.baseUrl.strip().length===0){throw new Error("url is wrong/empty")}var a="";var b=c.baseUrl.indexOf("?");if(b>=0){if(b<(c.baseUrl.length-1)){a=c.baseUrl.substr(b+1);a=(a.length>0)?a.split("&").join(","):""}c.baseUrl=c.baseUrl.substr(0,b)}c.parameters=(c.parameters)?c.parameters+","+a:a},getMethod:function(){return"post"},initRequest:function(){if(Object.isFunction(this.options.onCreate)){var a=this.options.onCreate();if(Object.isString(a)&&"cancel"==a.toLowerCase()){return false}}this.resolveParameters();return true},getDefaultOptions:function(b,a){return Object.extend({asynchronous:true,method:this.getMethod(),evalScripts:true,parameters:this.buildParameterString(a),onFailure:this.options.onFailure,onComplete:this.options.onComplete},b||{})},getAjaxRequest:function(b,a){if(!this.initRequest()){return null}b=Object.extend({onSuccess:(function(c){this.options.parser.load(c);this.options.handler(this)}).bind(this)},this.getDefaultOptions(b,a));return new Ajax.Request(this.options.baseUrl,b)},getAjaxUpdater:function(b,a){if(!this.initRequest()){return null}b=this.getDefaultOptions(b,a);return new Ajax.Updater(this.options.target,this.options.baseUrl,b)},getPeriodicalUpdater:function(b,a){if(!this.initRequest()){return null}b=Object.extend({frequency:this.options.refreshPeriod},this.getDefaultOptions(b,a));return new Ajax.PeriodicalUpdater(this.options.target,this.options.baseUrl,b)},buildParameterString:function(a){var b="";var e=null,d=null,h=null,c=null,g=null;var f=(this.replaceAJAX_DEFAULT(a)||"");f.split(",").each(function(i){if(i.strip().length===0){return}i=i.split("=");d=i[0].strip();h=i[1];c=null;if(Object.isString(h)&&h.strip().length>0){c=h.match(/\{[\w\.\(\)\[\]]*\}/g)}if(c){e=$(c[0].substring(1,c[0].length-1));if(["checkbox","radio","text","textarea","password","hidden","select-one"].indexOf(e.type)!==-1){b+="&"+d+"="+encodeURIComponent(e.value)}else{if(e.type=="select-multiple"){g=$F(c[0].substring(1,c[0].length-1));g.each(function(j){b+="&"+d+"="+encodeURIComponent(j)})}else{b+="&"+d+"="+encodeURIComponent(e.innerHTML)}}}else{b+="&"+d+"="+encodeURIComponent(h)}});if(b.charAt(0)==="&"){b=b.substr(1)}return b},replaceAJAX_DEFAULT:function(a){var b=this.options;return(a)?b.parameters.replace(AJAX_DEFAULT_PARAMETER_REGEXP,(a.type)?$F(a):a.innerHTML):b.parameters}});AjaxJspTag.UpdateField=Class.create(AjaxJspTag.Base,{initialize:function(a){AjaxJspTag.add(this);this.setOptions(a);this.setListeners()},setOptions:function(a){this.options=Object.extend({parameters:"",valueUpdateByName:false,eventType:"click",parser:new DefaultResponseParser(a.valueUpdateByName?"xml":"text"),handler:this.handler},a||{})},setListeners:function(){var c=this.options;var b=$(c.action);if(b){b["on"+c.eventType]=this.execute.bind(this)}},execute:function(){this.request=this.getAjaxRequest()},handler:function(b){var c=this.target.split(",");var d=this.parser.content;var e,a=Math.min(c.length,d.length);var f=(function(g){if(c[e]===g[0]){$(c[e]).value=g[1]}});for(e=0;e<a;e++){if(this.valueUpdateByName){d.each(f)}else{$(c[e]).value=d[e][1]}}}});AjaxJspTag.Select=Class.create(AjaxJspTag.Base,{initialize:function(a){AjaxJspTag.add(this);this.setOptions(a);this.setListeners();if(AjaxJspTag.parseBoolean(this.options.executeOnLoad)){this.execute()}},setOptions:function(a){this.options=Object.extend({parameters:"",emptyOptionValue:"",emptyOptionName:"",eventType:"change",parser:new DefaultResponseParser("xml"),handler:this.handler},a||{})},setListeners:function(){var b=this.options;var a=$(b.source);if(a){a.ajaxSelect=this.execute.bind(this);a["on"+b.eventType]=this.execute.bind(this)}},execute:function(){this.request=this.getAjaxRequest()},handler:function(){var b=$(this.target);if(!b){throw new Error("target lost")}b.options.length=0;b.disabled=false;var a=null;this.parser.content.each(function(c){a=new Option(c[0],c[1]);a.selected=(c.length===3&&AjaxJspTag.parseBoolean(c[2]));b.options[b.options.length]=a});if(a===null){b.options[b.options.length]=new Option(this.emptyOptionName,this.emptyOptionValue);b.disabled=true}if(Object.isFunction(b.ajaxSelect)){b.ajaxSelect()}}});AjaxJspTag.HtmlContent=Class.create(AjaxJspTag.Base,{initialize:function(a){AjaxJspTag.add(this);this.setOptions(a);this.setListeners()},setOptions:function(a){this.options=Object.extend({parameters:"",eventType:"click",parser:new DefaultResponseParser("html"),handler:this.handler},a||{})},setEvent:function(a){a["on"+this.options.eventType]=this.execute.bindAsEventListener(this)},setListeners:function(){var a=this.options;if(a.source){this.setEvent($(a.source))}else{if(a.sourceClass){$$("."+a.sourceClass).each(this.setEvent,this)}}},execute:function(a){if(this.options.sourceClass){this.request=this.getAjaxUpdater(null,Event.element(a))}else{this.request=this.getAjaxUpdater()}}});AjaxJspTag.Callout=Class.create(AjaxJspTag.Base,{initialize:function(a){AjaxJspTag.add(this);this.setOptions(a);this.setListeners()},setOptions:function(a){this.options=Object.extend({parameters:"",overlib:AJAX_CALLOUT_OVERLIB_DEFAULT,parser:new DefaultResponseParser("xmltohtml"),openEvent:"mouseover",closeEvent:"mouseout",handler:this.handler},a||{})},setEvent:function(a){a["on"+this.options.openEvent]=this.calloutOpen.bindAsEventListener(this);a["on"+this.options.closeEvent]=this.calloutClose.bindAsEventListener(this)},setListeners:function(){$$("."+this.options.sourceClass).each(this.setEvent,this)},calloutOpen:function(a){this.execute(a)},calloutClose:function(a){nd()},execute:function(a){this.request=this.getAjaxRequest(null,Event.element(a))},handler:function(){if(this.parser.content.strip().length!==0){if(this.overlib){if(this.title){overlib(this.parser.content,CAPTION,this.title,this.overlib)}else{overlib(this.parser.content,this.overlib)}}else{if(this.title){overlib(this.parser.content,CAPTION,this.title)}else{overlib(this.parser.content)}}}}});AjaxJspTag.TabPanel=Class.create(AjaxJspTag.Base,{createTab:function(a){var b=new Element("a").update(a.caption);b.base=this;b.baseUrl=a.baseUrl;b.href=AJAX_VOID_URL;b.onclick=function(){this.base.options.baseUrl=this.baseUrl;this.base.options.parameters=this.parameters;this.base.source=this;this.base.execute()};b.parameters=a.parameters;return b},initialize:function(d){this.panel=$(d.id);this.panel.addClassName("cbms_tabPanel");this.content=new Element("div");this.content.addClassName("cbms_tabContent");var e=new Element("ul");e.innerHTML="";var g=null,b=null,c=null;d.pages.each(function(a){b=new Element("li");b.innerHTML="";c=this.createTab(a);b.appendChild(c);if(a.defaultTab){g=g||c.onclick.bind(c)}e.appendChild(b)},this);this.panel.innerHTML="";var h=new Element("div");h.addClassName("cbms_tabNavigation");h.appendChild(e);this.panel.appendChild(h);this.panel.appendChild(this.content);this.setOptions(d);this.options.target=this.content;if(Object.isFunction(g)){g()}},setOptions:function(a){this.options=Object.extend({eventType:"click",parser:new DefaultResponseParser("html")},a||{})},execute:function(){this.request=this.getAjaxUpdater({onSuccess:this.handler.bind(this)})},handler:function(){this.panel.select(".ajaxCurrentTab").each(function(a){Element.removeClassName(a,"ajaxCurrentTab")});if(!this.source.hasClassName("ajaxCurrentTab")){this.source.addClassName("ajaxCurrentTab")}}});AjaxJspTag.XmlToHtmlAutocompleter=Class.create(Autocompleter.Base,{initialize:function(a){this.autocompleteTag=a;this.baseInitialize(a.options.source,a.options.divElement,{minChars:a.options.minChars,asynchronous:true,tokens:a.options.appendSeparator,indicator:a.options.indicator,evalScripts:true,onComplete:this.onComplete.bind(this),afterUpdateElement:function(b,c){a.handler(c)}});this.url=a.options.baseUrl;this.getUpdatedChoices0=Ajax.Autocompleter.prototype.getUpdatedChoices},getUpdatedChoices:function(){if(!this.autocompleteTag.initRequest()){this.stopIndicator();return}this.options.defaultParams=this.autocompleteTag.buildParameterString();this.getUpdatedChoices0()},onComplete:function(c){this.autocompleteTag.options.parser.load(c);this.updateChoices(this.autocompleteTag.options.parser.content);if(this.autocompleteTag.options.parser.content===null){this.stopIndicator()}if(Object.isFunction(this.autocompleteTag.options.onComplete)){var a=$(this.autocompleteTag.options.source);var b=a.onupdate;a.onupdate="";this.autocompleteTag.options.onComplete();a.onupdate=b}}});AjaxJspTag.Autocomplete=Class.create(AjaxJspTag.Base,{initialize:function(a){this.setOptions(a);var b=$(this.options.source);b.insert({after:'<div id="'+this.options.divElement+'" class="'+this.options.className+'"></div>'});this.execute()},setOptions:function(a){this.options=Object.extend({divElement:"ajaxAuto_"+a.source,parser:new DefaultResponseParser("xmltohtmllist",true)},a||{})},execute:function(a){var b=new AjaxJspTag.XmlToHtmlAutocompleter(this)},handler:function(a){var b=$(this.options.target);if(b){if(this.options.appendSeparator){if(b.value.length>0){b.value+=this.options.appendSeparator}b.value+=a.id}else{b.value=a.id}}this.options.selectedIndex=a.autocompleteIndex;this.options.selectedObject=a}});AjaxJspTag.Portlet=Class.create(AjaxJspTag.Base,{initialize:function(a){this.setOptions(a);this.setListeners();if(this.options.startMinimize){this.togglePortlet()}if(this.options.executeOnLoad){this.execute()}AjaxJspTag.add(this)},setOptions:function(a){this.options=Object.extend({target:a.source+"Content",close:a.source+"Close",refresh:a.source+"Refresh",toggle:a.source+"Size",isMaximized:true,refreshPeriod:null,eventType:"click",parser:new DefaultResponseParser("html")},a||{})},setListeners:function(){var a=this.options;if(a.imageClose){$(a.close)["on"+a.eventType]=this.closePortlet.bindAsEventListener(this)}if(a.imageRefresh){$(a.refresh)["on"+a.eventType]=this.refreshPortlet.bindAsEventListener(this)}if(a.imageMaximize&&a.imageMinimize){$(a.toggle)["on"+a.eventType]=this.togglePortlet.bindAsEventListener(this)}},execute:function(a){this.ajaxPeriodicalUpdater=this.options.refreshPeriod?this.getPeriodicalUpdater():this.getAjaxUpdater()},stopAutoRefresh:function(){if(this.ajaxPeriodicalUpdater&&this.options.refreshPeriod){this.ajaxPeriodicalUpdater.stop()}},startAutoRefresh:function(){if(this.ajaxPeriodicalUpdater&&this.options.refreshPeriod){this.ajaxPeriodicalUpdater.start();return true}return false},refreshPortlet:function(a){this.stopAutoRefresh();if(!this.startAutoRefresh()){this.execute()}},closePortlet:function(a){this.stopAutoRefresh();Element.remove(this.options.source)},togglePortlet:function(a){Element.toggle(this.options.target);if(this.options.isMaximized){if(this.options.imageMaximize){$(this.options.toggle).src=this.options.imageMaximize}this.stopAutoRefresh()}else{if(this.options.imageMinimize){$(this.options.toggle).src=this.options.imageMinimize}this.startAutoRefresh()}this.options.isMaximized=!this.options.isMaximized}});AjaxJspTag.Tree=Class.create(AjaxJspTag.Base,{initialize:function(a){this.setOptions(a);this.execute()},setOptions:function(a){this.options=Object.extend({eventType:"click",parser:new ResponseXmlToHtmlLinkListParser(),collapsedClass:"collapsedNode",expandedClass:"expandedNode",treeClass:"tree",nodeClass:""},a||{})},execute:function(f){var b=$(this.options.target);var g=this.options;if(g.target){var c=$("span_"+g.target);if(c){var a=this.toggle(c);if(!a){b.innerHTML="";b.hide();return}}}var d=this;this.request=this.getAjaxRequest({onSuccess:function(e){d.options.parser.load({responseXML:e.responseXML,collapsedClass:d.options.collapsedClass,treeClass:d.options.treeClass,nodeClass:d.options.nodeClass});d.handler()}},{innerHTML:this.options.target})},toggle:function(b){var a=b.hasClassName(this.options.expandedClass);b.removeClassName(this.options.expandedClass);b.removeClassName(this.options.collapsedClass);b.addClassName((a)?this.options.collapsedClass:this.options.expandedClass);return !a},handler:function(){var c=this.options;var d=c.parser;var b=$(c.target);var a="block";if(!d.content){b.innerHTML="";a="none"}b.appendChild(d.content);b.setStyle({display:a});if(a=="block"){b.select("span").each(function(e){e["on"+c.eventType]=this.toggleTreeNode.bind(this,e.id.substring(5))},this);d.expandedNodes.each(this.toggleTreeNode,this);AjaxJspTag.reload()}},toggleTreeNode:function(a){var b=Object.clone(this.options);b.target=a;return new AjaxJspTag.Tree(b)}});AjaxJspTag.Toggle=Class.create(AjaxJspTag.Base,{initialize:function(a){this.setOptions(a);this.container=$(this.options.source);if(this.options.messageClass){this.messageContainer=this.container.insert({top:'<div id="'+this.options.source+'_message" class="'+this.options.messageClass+'"></div>'})}this.classList=[this.options.selectedOverClass,this.options.selectedLessClass,this.options.overClass,this.options.selectedClass];this.setListeners();AjaxJspTag.add(this)},setOptions:function(a){this.options=Object.extend({parameters:("rating={"+AJAX_DEFAULT_PARAMETER+"}"),parser:new DefaultResponseParser("text"),handler:this.handler},a||{})},setEvent:function(a){a.onmouseover=this.raterMouseOver.bindAsEventListener(this);a.onmouseout=this.raterMouseOut.bindAsEventListener(this);a.onclick=this.raterClick.bindAsEventListener(this)},setListeners:function(){this.container.select("a").each(this.setEvent,this)},raterMouseOver:function(j){var h=this.container.select("a");var d=this.container.select("."+this.options.selectedClass).pop();var b=h.indexOf(d);var c=h.indexOf(Event.element(j));if(this.options.messageClass){$(this.messageContainer.id+"_message").innerHTML=h[c].title}var g=0,a=h.length,f=null;for(g=0;g<a;g++){f=h[g];if(b>=0&&!(g>b&&g<=c)){if(g<=b){if(g<=c){f.addClassName(this.options.selectedOverClass)}else{f.addClassName(this.options.selectedLessClass)}}}else{if(g<=c){f.addClassName(this.options.overClass)}}}},raterMouseOut:function(a){if(this.options.messageClass){$(this.messageContainer.id+"_message").innerHTML=""}this.clearCSSClass(this.options.selectedClass)},clearCSSClass:function(c){var b=this.container.select("a");var a=this.classList;if(a.indexOf(c)!==-1){a=a.without(c)}b.each(function(d){a.each(d.removeClassName,d)},this);return b},raterClick:function(k){var b=Event.element(k);var d=this.container.select("."+this.options.selectedClass).pop();var a=this.clearCSSClass();var f=a.indexOf(d);var l=a.indexOf(b);var g=0,h=null;for(g=0;g<=l;g++){h=a[g];if(!this.container.hasClassName("onoff")||(g===l&&f===-1)){h.addClassName(this.options.selectedClass)}}var j=a[l].title;if(this.container.hasClassName("onoff")){var c=this.options.ratings.split(",");j=(c[0]==j)?c[1]:c[0];a[l].title=j}this.execute({innerHTML:j});if(this.options.state){$(this.options.state).value=j}},execute:function(a){this.request=this.getAjaxRequest(null,a)},handler:function(){var a=this.parser.content[0][0];if(Object.isFunction(this.updateFunction)){this.updateFunction(a)}}});