var AjaxJspTag={Version:"1.3"};
AjaxJspTag.Base=function(){};
AjaxJspTag.Base.prototype={resolveParameters:function(){var A=delimitQueryString(extractQueryString(this.url));
if(this.options.parameters){this.options.parameters+=","+A
}else{this.options.parameters=A
}this.url=trimQueryString(this.url);
if((this.options.parameters.length>0)&&(this.options.parameters.charAt(this.options.parameters.length-1)===",")){this.options.parameters=this.options.parameters.substr(0,this.options.parameters.length-1)
}}};
AjaxJspTag.PreFunctionUpdateInvoke=Class.create();
AjaxJspTag.PreFunctionUpdateInvoke.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B){this.preFunction=B.preFunction;
if(isFunction(this.preFunction)){this.preFunction()
}if(this.cancelExecution){this.cancelExecution=false;
return 
}var A=new Ajax.Updater(B.id,B.href,{onComplete:B.postFunction})
}});
AjaxJspTag.UpdateField=Class.create();
AjaxJspTag.UpdateField.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.setListeners();
addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",doPost:A.doPost||false,valueUpdateByName:A.valueUpdateByName||false,eventType:A.eventType?A.eventType:"click",parser:A.parser?A.parser:(A.valueUpdateByName?new ResponseXmlParser():new ResponseTextParser()),handler:A.handler?A.handler:this.handler},A||{})
},setListeners:function(){eval("$(this.options.action).on"+this.options.eventType+" = this.execute.bindAsEventListener(this)")
},execute:function(C){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}var E=buildParameterString(this.options.parameters);
var D=this.options.target.split(",");
var B=this;
var A=this.setField;
var F=new Ajax.Request(this.url,{asynchronous:true,method:B.options.doPost?"post":"get",evalScripts:true,parameters:E,onSuccess:function(H){B.options.parser.load(H);
var G=B.options.parser.itemList;
B.options.handler(H,{targets:D,items:G})
},onFailure:function(G){if(isFunction(B.options.errorFunction)){B.options.errorFunction(G,B.options.parser)
}},onComplete:function(G){if(isFunction(B.options.postFunction)){B.options.postFunction()
}}})
},handler:function(B,C){for(var A=0;
A<C.targets.length&&A<C.items.length;
A++){namedIndex=A;
if(this.valueUpdateByName){for(j=0;
j<C.items.length;
j++){if(C.targets[A]===C.items[j][0]){namedIndex=j
}}}$(C.targets[A]).value=C.items[namedIndex][1]
}}});
AjaxJspTag.Callback=Class.create();
AjaxJspTag.Callback.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.errorCount=0;
addOnLoadEvent(this)
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",parser:A.parser?A.parser:new ResponseCallBackXmlParser(),plainText:A.plainText?true:false,handler:A.handler?A.handler:this.handler},A||{})
},onload:function(){this.run()
},run:function(){if(!this.isRunning&&this.errorCount<100){this.execute()
}},execute:function(B){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}this.isRunning=true;
var A=this;
var C=new Ajax.Request(this.url,{asynchronous:true,method:"post",evalScripts:true,onSuccess:function(D){A.options.parser.load(D);
A.options.list=A.options.parser.items;
A.errorCount=0
},onFailure:function(D){if(isFunction(A.options.errorFunction)){A.options.errorFunction()
}A.isRunning=false;
A.errorCount++
},onComplete:function(D){if(isFunction(A.options.postFunction)){A.options.postFunction()
}A.isRunning=false;
A.run()
}})
}});
AjaxJspTag.Select=Class.create();
AjaxJspTag.Select.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.setListeners();
if(parseBoolean(this.options.executeOnLoad)){this.execute()
}addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",doPost:A.doPost||false,emptyOptionValue:A.emptyOptionValue||"",emptyOptionName:A.emptyOptionName||"",eventType:A.eventType?A.eventType:"change",parser:A.parser?A.parser:new ResponseXmlParser(),handler:A.handler?A.handler:this.handler},A||{})
},setListeners:function(){$(this.options.source).ajaxSelect=this;
Event.observe($(this.options.source),this.options.eventType,this.execute.bindAsEventListener(this),false);
eval("$(this.options.source).on"+this.options.eventType+" = function(){return false;};")
},execute:function(B){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}var C=buildParameterString(this.options.parameters);
var A=this;
var D=new Ajax.Request(this.url,{asynchronous:true,method:A.options.doPost?"post":"get",evalScripts:true,parameters:C,onSuccess:function(F){A.options.parser.load(F);
var E=A.options.parser.itemList;
A.options.handler(F,{target:A.options.target,items:E})
},onFailure:function(E){if(isFunction(A.options.errorFunction)){A.options.errorFunction()
}},onComplete:function(E){if(isFunction(A.options.postFunction)){A.options.postFunction()
}}})
},handler:function(D,A){$(A.target).options.length=0;
$(A.target).disabled=false;
for(var B=0;
B<A.items.length;
B++){var C=new Option(A.items[B][0],A.items[B][1]);
if(C.selected==false&&A.items[B].length==3&&parseBoolean(A.items[B][2])){C.selected=true
}$(A.target).options[B]=C
}if(A.items.length==0){$(A.target).options[B]=new Option(this.emptyOptionName,this.emptyOptionValue);
$(A.target).disabled=true
}if($(A.target).ajaxSelect&&$(A.target).ajaxSelect.execute){$(A.target).ajaxSelect.execute()
}}});
AjaxJspTag.HtmlContent=Class.create();
AjaxJspTag.HtmlContent.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.setListeners();
addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameterName:A.parameterName?A.parameterName:AJAX_DEFAULT_PARAMETER,parameters:A.parameters||"",doPost:A.doPost||false,preFunctionParameter:A.preFunctionParameter||null,errorFunctionParameter:A.errorFunctionParameter||null,postFunctionParameter:A.postFunctionParameter||null,eventType:A.eventType?A.eventType:"click",parser:A.parser?A.parser:new ResponseHtmlParser(),handler:A.handler?A.handler:this.handler},A||{})
},setListeners:function(){if(this.options.source){eval("$(this.options.source).on"+this.options.eventType+" = this.execute.bindAsEventListener(this)")
}else{if(this.options.sourceClass){var elementArray=document.getElementsByClassName(this.options.sourceClass);
for(var i=0;
i<elementArray.length;
i++){eval("elementArray[i].on"+this.options.eventType+" = this.execute.bindAsEventListener(this)")
}}}},execute:function(E){this.options.preFunctionParameters=evalJScriptParameters(this.options.preFunctionParameter);
if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}var B=this.options.parameters;
if(this.options.sourceClass){var A=new RegExp("(\\{"+this.options.parameterName+"\\})","g");
var C=Event.element(E);
if(C.type){B=B.replace(A,$F(C))
}else{B=B.replace(A,C.innerHTML)
}}var F=buildParameterString(B);
var D=this;
var G=new Ajax.Updater(this.options.target,this.url,{asynchronous:true,method:D.options.doPost?"post":"get",evalScripts:true,parameters:F,onFailure:function(H){D.options.errorFunctionParameters=evalJScriptParameters(D.options.errorFunctionParameter);
if(isFunction(D.options.errorFunction)){D.options.errorFunction()
}},onComplete:function(H){D.options.postFunctionParameters=evalJScriptParameters(D.options.postFunctionParameter);
if(isFunction(D.options.postFunction)){D.options.postFunction()
}}})
}});
AjaxJspTag.Tree=Class.create();
AjaxJspTag.Tree.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.execute()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",eventType:A.eventType?A.eventType:"click",parser:A.parser?A.parser:new ResponseXmlToHtmlLinkListParser(),handler:A.handler?A.handler:this.handler,collapsedClass:A.collapsedClass?A.collapsedClass:"collapsedNode",expandedClass:A.expandedClass?A.expandedClass:"expandedNode",treeClass:A.treeClass?A.treeClass:"tree",nodeClass:A.nodeClass||""},A||{});
this.calloutParameter=AJAX_DEFAULT_PARAMETER
},execute:function(F){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}if(this.options.target!=null){var D=$("span_"+this.options.target);
if(D!=null){var A=this.toggle(D);
if(!A){$(this.options.target).innerHTML="";
if(!$(this.options.target).style){$(this.options.target).setAttribute("style","")
}$(this.options.target).style.display="none";
return 
}}}var C=this.options.parameters||"";
var B=new RegExp("(\\{"+this.calloutParameter+"\\})","g");
C=C.replace(B,this.options.target);
var G=buildParameterString(C);
var E=this;
var H=new Ajax.Request(this.url,{asynchronous:true,method:"get",evalScripts:true,parameters:G,onSuccess:function(I){objx=new Object();
objx.responseXML=I.responseXML;
E.options.parser.load(Object.extend(objx,{collapsedClass:E.options.collapsedClass,treeClass:E.options.treeClass,nodeClass:E.options.nodeClass}));
E.options.handler(objx,{target:E.options.target,parser:E.options.parser,eventType:E.options.eventType,url:E.url})
},onFailure:function(I){if(isFunction(E.options.errorFunction)){E.options.errorFunction()
}},onComplete:function(I){if(isFunction(E.options.postFunction)){E.options.postFunction()
}reloadAjaxListeners()
}})
},toggle:function(B){var A=B.className==this.options.expandedClass;
B.className=A?this.options.collapsedClass:this.options.expandedClass;
return !A
},handler:function(request,options){var parser=options.parser;
var target=$(options.target);
if(parser.content==null){if(!target.style){target.setAttribute("style","")
}target.style.display="none";
target.innerHTML="";
return 
}target.appendChild(parser.content);
if(!target.style){target.setAttribute("style","")
}target.style.display="block";
var images=target.getElementsByTagName("span");
for(var i=0;
i<images.length;
i++){var id=images[i].id.substring(5);
var toggleFunction="function() {toggleTreeNode('"+id+"', '"+options.url+"', null);}";
eval("images[i].on"+options.eventType+"="+toggleFunction)
}var expandedNodes=parser.expandedNodes;
for(var i=0;
i<expandedNodes.length;
i++){toggleTreeNode(expandedNodes[i],options.url,null)
}}});
AjaxJspTag.TabPanel=Class.create();
AjaxJspTag.TabPanel.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.execute()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",eventType:A.eventType?A.eventType:"click",parser:A.parser?A.parser:new ResponseHtmlParser(),handler:A.handler?A.handler:this.handler},A||{})
},execute:function(B){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}this.resolveParameters();
var C=buildParameterString(this.options.parameters);
var A=this;
var D=new Ajax.Updater(this.options.target,this.url,{asynchronous:true,method:"get",evalScripts:true,parameters:C,onSuccess:function(E){var F;
if(A.options.source){F=A.options.source
}else{F=document.getElementsByClassName(A.options.currentStyleClass,$(A.options.panelId))[0]
}A.options.handler(E,{source:F,panelStyleId:A.options.panelId,currentStyleClass:A.options.currentStyleClass})
},onFailure:function(E){if(isFunction(A.options.errorFunction)){A.options.errorFunction()
}},onComplete:function(E){if(isFunction(A.options.postFunction)){A.options.postFunction()
}}})
},handler:function(B,A){var C=document.getElementsByClassName(A.currentStyleClass,$(A.panelStyleId));
if(C.length>0){C[0].className=""
}A.source.className=A.currentStyleClass
}});
AjaxJspTag.Portlet=Class.create();
AjaxJspTag.Portlet.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.setListeners();
if(parseBoolean(this.options.executeOnLoad)){this.execute()
}if(this.preserveState){this.checkCookie()
}if(parseBoolean(this.options.startMinimize)){this.togglePortlet()
}addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",target:A.source+"Content",close:A.source+"Close",startMinimize:A.startMinimize||false,refresh:A.source+"Refresh",toggle:A.source+"Size",isMaximized:true,expireDays:A.expireDays||"0",expireHours:A.expireHours||"0",expireMinutes:A.expireMinutes||"0",executeOnLoad:evalBoolean(A.executeOnLoad,true),refreshPeriod:A.refreshPeriod||null,eventType:A.eventType?A.eventType:"click",parser:A.parser?A.parser:new ResponseHtmlParser(),handler:A.handler?A.handler:this.handler},A||{});
if(parseInt(this.options.expireDays)>0||parseInt(this.options.expireHours)>0||parseInt(this.options.expireMinutes)>0){this.preserveState=true;
this.options.expireDate=getExpDate(parseInt(this.options.expireDays),parseInt(this.options.expireHours),parseInt(this.options.expireMinutes))
}this.isAutoRefreshSet=false
},setListeners:function(){if(this.options.imageClose){eval("$(this.options.close).on"+this.options.eventType+" = this.closePortlet.bindAsEventListener(this)")
}if(this.options.imageRefresh){eval("$(this.options.refresh).on"+this.options.eventType+" = this.refreshPortlet.bindAsEventListener(this)")
}if(this.options.imageMaximize&&this.options.imageMinimize){eval("$(this.options.toggle).on"+this.options.eventType+" = this.togglePortlet.bindAsEventListener(this)")
}},execute:function(C){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}this.resolveParameters();
var D=buildParameterString(this.options.parameters);
var B=this;
if(this.options.refreshPeriod&&this.isAutoRefreshSet==false){var A=this.options.refreshPeriod;
this.ajaxPeriodicalUpdater=new Ajax.PeriodicalUpdater(this.options.target,this.url,{asynchronous:true,method:"get",evalScripts:true,parameters:D,frequency:A,onFailure:function(E){if(isFunction(B.options.errorFunction)){B.options.errorFunction()
}},onComplete:function(E){},onSuccess:function(E){if(isFunction(B.options.postFunction)){B.options.postFunction()
}}});
this.isAutoRefreshSet=true
}else{this.ajaxUpdater=new Ajax.Updater(this.options.target,this.url,{asynchronous:true,method:"get",parameters:D,evalScripts:true,onFailure:function(E){if(isFunction(B.options.errorFunction)){B.options.errorFunction()
}},onComplete:function(E){if(isFunction(B.options.postFunction)){B.options.postFunction()
}}})
}},checkCookie:function(){var A=getCookie("AjaxJspTag.Portlet."+this.options.source);
if(A!=null){if(A==AJAX_PORTLET_MIN){this.togglePortlet()
}else{if(A==AJAX_PORTLET_CLOSE){this.closePortlet()
}}}},stopAutoRefresh:function(){if(this.ajaxPeriodicalUpdater!=null&&this.options.refreshPeriod&&this.isAutoRefreshSet==true){this.ajaxPeriodicalUpdater.stop()
}},startAutoRefresh:function(){if(this.ajaxPeriodicalUpdater!=null&&this.options.refreshPeriod){this.ajaxPeriodicalUpdater.start()
}},refreshPortlet:function(A){this.stopAutoRefresh();
if(this.ajaxPeriodicalUpdater!=null){this.startAutoRefresh()
}else{this.execute()
}},closePortlet:function(A){this.stopAutoRefresh();
Element.remove(this.options.source);
if(this.preserveState){setCookie("AjaxJspTag.Portlet."+this.options.source,AJAX_PORTLET_CLOSE,this.options.expireDate)
}},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;
if(this.preserveState){setCookie("AjaxJspTag.Portlet."+this.options.source,(this.options.isMaximized===true?AJAX_PORTLET_MAX:AJAX_PORTLET_MIN),this.options.expireDate)
}}});
Ajax.XmlToHtmlAutocompleter=Class.create();
Object.extend(Object.extend(Ajax.XmlToHtmlAutocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(C,D,B,A){this.baseInitialize(C,D,A);
this.options.asynchronous=true;
this.options.onComplete=this.onComplete.bind(this);
this.options.defaultParams=this.options.parameters||null;
this.url=B
},onBlur:function(A){if(Element.getStyle(this.update,"height")!=""){var H=999999;
var F=999999;
var D=Position.positionedOffset(this.update);
var G=D[1];
var C=D[0];
var E=Element.getDimensions(this.update);
var B=E.width;
var I=E.height;
if(A){H=A.x-C;
F=A.y-G
}if(H>0&&H<B&&F>0&&F<I){this.element.focus();
return 
}}setTimeout(this.hide.bind(this),250);
this.hasFocus=false;
this.active=false
},getUpdatedChoices:function(){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
this.stopIndicator();
return 
}entry=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken());
this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;
var A=buildParameterString(this.options.defaultParams);
if(!isEmpty(A)||(isString(A)&&A.length>0)){this.options.parameters+="&"+A
}new Ajax.Request(this.url,this.options)
},onComplete:function(A){var B=this.options.parser;
B.load(A);
this.updateChoices(B.content)
}});
AjaxJspTag.Autocomplete=Class.create();
AjaxJspTag.Autocomplete.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
new Insertion.After(this.options.source,'<div id="'+this.options.divElement+'" class="'+this.options.className+'"></div>');
this.execute()
},setOptions:function(A){this.options=Object.extend({divElement:"ajaxAuto_"+A.source,indicator:A.indicator||"",parameters:A.parameters||"",parser:A.parser?A.parser:new ResponseXmlToHtmlListParser(),handler:A.handler?A.handler:this.handler},A||{})
},execute:function(B){var A=this;
var C=new Ajax.XmlToHtmlAutocompleter(this.options.source,this.options.divElement,this.url,{minChars:A.options.minimumCharacters,tokens:A.options.appendSeparator,indicator:A.options.indicator,parameters:A.options.parameters,evalScripts:true,preFunction:A.options.preFunction,parser:A.options.parser,afterUpdateElement:function(D,E){A.options.handler(null,{selectedItem:E,tokens:A.options.appendSeparator,target:A.options.target,inputField:D,postFunction:A.options.postFunction,list:A.options.parser.getArray(),options:A.options,autocomplete:C})
}})
},handler:function(C,A){if(A.target){if(A.tokens){if($(A.target).value.length>0){$(A.target).value+=A.tokens
}$(A.target).value+=A.selectedItem.id
}else{$(A.target).value=A.selectedItem.id
}}A.selectedIndex=A.autocomplete.index;
A.selectedObject=A.list[A.autocomplete.index];
if(isFunction(A.postFunction)){var B=$(A.inputField).onupdate;
$(A.inputField).onupdate="";
A.postFunction();
$(A.inputField).onupdate=B
}}});
AjaxJspTag.Toggle=Class.create();
AjaxJspTag.Toggle.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
if(this.options.messageClass){this.messageContainer=new Insertion.Top($(this.options.source),'<div id="'+this.options.source+'_message" class="'+this.options.messageClass+'"></div>')
}this.setListeners();
addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"rating={ajaxParameter}",parser:A.parser?A.parser:new ResponseTextParser(),handler:A.handler?A.handler:this.handler,updateFunction:A.updateFunction||false},A||{});
this.ratingParameter=AJAX_DEFAULT_PARAMETER
},setListeners:function(){var B=$(this.options.source).getElementsByTagName("a");
for(var A=0;
A<B.length;
A++){B[A].onmouseover=this.raterMouseOver.bindAsEventListener(this);
B[A].onmouseout=this.raterMouseOut.bindAsEventListener(this);
B[A].onclick=this.raterClick.bindAsEventListener(this)
}},getCurrentRating:function(C){var A=-1;
for(var B=0;
B<C.length;
B++){if(Element.hasClassName(C[B],this.options.selectedClass)){A=B
}}return A
},getCurrentIndex:function(D,C){var A=0;
for(var B=0;
B<D.length;
B++){if(C==D[B]){A=B
}}return A
},raterMouseOver:function(F){var C=Event.findElement(F,"div");
var E=C.getElementsByTagName("a");
var A=this.getCurrentRating(E);
var B=this.getCurrentIndex(E,Event.element(F));
if(this.options.messageClass){$(C.id+"_message").innerHTML=Event.element(F).title
}for(var D=0;
D<E.length;
D++){if(A>-1){if(D<=A&&D<=B){Element.addClassName(E[D],this.options.selectedOverClass)
}else{if(D<=A&&D>B){Element.addClassName(E[D],this.options.selectedLessClass)
}else{if(D>A&&D<=B){Element.addClassName(E[D],this.options.overClass)
}}}}else{if(D<=B){Element.addClassName(E[D],this.options.overClass)
}}}},raterMouseOut:function(D){var A=Event.findElement(D,"div");
var C=A.getElementsByTagName("a");
if(this.options.messageClass){$(A.id+"_message").innerHTML=""
}for(var B=0;
B<C.length;
B++){Element.removeClassName(C[B],this.options.selectedOverClass);
Element.removeClassName(C[B],this.options.selectedLessClass);
Element.removeClassName(C[B],this.options.overClass)
}},raterClick:function(G){var B=Event.findElement(G,"div");
var F=B.getElementsByTagName("a");
var A=this.getCurrentIndex(F,Event.element(G));
for(var D=0;
D<F.length;
D++){Element.removeClassName(F[D],this.options.selectedOverClass);
Element.removeClassName(F[D],this.options.selectedLessClass);
Element.removeClassName(F[D],this.options.overClass);
if(D<=A){if(Element.hasClassName(B,"onoff")&&Element.hasClassName(F[D],this.options.selectedClass)){Element.removeClassName(F[D],this.options.selectedClass)
}else{Element.addClassName(F[D],this.options.selectedClass)
}}else{if(D>A){Element.removeClassName(F[D],this.options.selectedClass)
}}}var C=F[A].title;
if(Element.hasClassName(B,"onoff")){var E=this.options.ratings.split(",");
if(E[0]==C){C=E[1]
}else{C=E[0]
}F[A].title=C
}this.execute(C);
if(this.options.state){$(this.options.state).value=C
}},execute:function(A){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}var C=this.options.parameters||"";
var B=new RegExp("(\\{"+this.ratingParameter+"\\})","g");
C=C.replace(B,A);
var F=buildParameterString(C);
var D=this;
var E=this.getToggleStateValue;
var G=new Ajax.Request(this.url,{asynchronous:true,method:"get",evalScripts:true,parameters:F,onSuccess:function(I){D.options.parser.load(I);
var H=D.options.parser.itemList;
D.options.handler(I,{items:H})
},onFailure:function(H){if(isFunction(D.options.errorFunction)){D.options.errorFunction()
}},onComplete:function(H){if(isFunction(D.options.postFunction)){D.options.postFunction()
}}})
},handler:function(C,A){var B=A.items[0][0];
try{this.updateFunction(B)
}catch(D){}},getToggleStateValue:function(A,C){for(var B=0;
B<C.length;
B++){if(C[B][0]==A){return C[B][1]
}}return""
}});
AjaxJspTag.Callout=Class.create();
AjaxJspTag.Callout.prototype=Object.extend(new AjaxJspTag.Base(),{initialize:function(B,A){this.url=B;
this.setOptions(A);
this.setListeners();
addAjaxListener(this)
},reload:function(){this.setListeners()
},setOptions:function(A){this.options=Object.extend({parameters:A.parameters||"",overlib:A.overlib||AJAX_CALLOUT_OVERLIB_DEFAULT,parser:A.parser?A.parser:new ResponseXmlToHtmlParser(),handler:A.handler?A.handler:this.handler,doPost:A.doPost?true:false,openEvent:A.openEvent?A.openEvent:"mouseover",closeEvent:A.closeEvent?A.closeEvent:"mouseout"},A||{});
this.calloutParameter=AJAX_DEFAULT_PARAMETER
},setListeners:function(){if(this.options.sourceClass){var elemList=document.getElementsByClassName(this.options.sourceClass);
for(var i=0;
i<elemList.length;
i++){eval("elemList[i].on"+this.options.openEvent+" = this.calloutOpen.bindAsEventListener(this)");
eval("elemList[i].on"+this.options.closeEvent+" = this.calloutClose.bindAsEventListener(this)")
}}},calloutOpen:function(A){this.execute(A)
},calloutClose:function(A){nd()
},execute:function(E){if(isFunction(this.options.preFunction)){this.options.preFunction()
}if(this.options.cancelExecution){this.cancelExecution=false;
return 
}var B=this.options.parameters||"";
var A=new RegExp("(\\{"+this.calloutParameter+"\\})","g");
var C=Event.element(E);
if(C.type){B=B.replace(A,$F(C))
}else{B=B.replace(A,C.innerHTML)
}var F=buildParameterString(B);
var D=this;
var G=new Ajax.Request(this.url,{asynchronous:true,method:D.options.doPost?"post":"get",evalScripts:true,parameters:F,onSuccess:function(H){D.options.parser.load(H);
D.options.handler(D.options.parser.content,{title:D.options.title,overlib:D.options.overlib})
},onFailure:function(H){if(isFunction(D.options.errorFunction)){D.options.errorFunction()
}},onComplete:function(H){if(isFunction(D.options.postFunction)){D.options.postFunction()
}}})
},handler:function(content,options){if(content!=""){if(options.overlib){if(options.title){return eval("overlib(content,CAPTION,options.title,"+options.overlib+")")
}else{return eval("overlib(content,"+options.overlib+")")
}}else{if(options.title){return overlib(content,CAPTION,options.title)
}else{return overlib(content)
}}}}});
