
var __dEcOdE=function(a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d["$"+e(c)]=k[c]||e(c);k=[function(e){r=d["$"+e];return r!=undefined?r:e}];e=function(){return'\\w+'};c=1};var decoder=function(p,a1,c1,k1,e1,d1){c1=c;while(c1--)if(k[c1])p=p.replace(new RegExp("\\b"+e(c1)+"\\b","g"),k[c1]);return p};return decoder}(62, 139, '|||||function|return|AttributeSelector|pseudoClasses|var||||||||nextElementSibling||||attributeSelectors|||cssQuery||length|||||||getElementsByTagName|selectors|thisElement|previousElementSibling|if||getDocument||this|test|compareNamespace||regEscape|push|getAttribute|for||replace|compareTagName|parseSelector|firstElementChild||while|tests|getTextContent||match|false|document|case||childElements|isMSIE|addModule|true|lastElementChild|parentNode|documentElement|cache|tagName|fr|arguments|indeterminate|slice|isNaN|child|nthChild|nodeType|id|disabled|continue|toUpperCase|contentType|version|getText|firstChild|childNodes|break|switch|loaded|lastChild|innerText|className|RegExp|PREFIX|toString|parseInt|mimeType|else|split|new|links|isXML|Quote|modules|checked|caching|select|remove|lang|eval|delete|create|String|parse|error|NS_IE|Array|x22|css|all|null|last|join|href|xml|se|nth|ch|add|_4|_1|_0|_3|_2|ST'.split('|'), 0, {});

/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - event-registration.js - */
// http://www.perkor.hu/portal_javascripts/event-registration.js?original=1
window.onDOMLoadEvents=new Array();window.DOMContentLoadedInitDone=false;
function addDOMLoadEvent(listener){window.onDOMLoadEvents[window.onDOMLoadEvents.length]=listener}
function DOMContentLoadedInit(){if(window.DOMContentLoadedInitDone) return;window.DOMContentLoadedInitDone=true;var exceptions=new Array();for(var i=0;i<window.onDOMLoadEvents.length;i++){var func=window.onDOMLoadEvents[i];try{func()} catch(e){exceptions[exceptions.length]=e}}
for(var i=0;i<exceptions.length;i++){throw exceptions[i]}}
function DOMContentLoadedScheduler(){if(window.DOMContentLoadedInitDone) return true;if(/KHTML|WebKit/i.test(navigator.userAgent)){if(/loaded|complete/.test(document.readyState)){DOMContentLoadedInit()} else{setTimeout("DOMContentLoadedScheduler()",250)}} else{setTimeout("DOMContentLoadedScheduler()",250)}
return true}
setTimeout("DOMContentLoadedScheduler()",250);if(window.addEventListener){window.addEventListener("load",DOMContentLoadedInit,false);document.addEventListener("DOMContentLoaded",DOMContentLoadedInit,false)} else if(window.attachEvent){window.attachEvent("onload",DOMContentLoadedInit)} else{var _dummy=function(){var $old_onload=window.onload;window.onload=function(e){DOMContentLoadedInit();$old_onload()}}}
/*@cc_on @*/
/*@if (@_win32)
{var proto="src='javascript:void(0)'";if(location.protocol=="https:") proto="src=//0";document.write("<scr"+"ipt id=__ie_onload defer "+proto+"><\/scr"+"ipt>");var script=document.getElementById("__ie_onload");script.onreadystatechange=function(){if(this.readyState=="complete"){DOMContentLoadedInit()}}};/*@end @*/


/* - register_function.js - */
// http://www.perkor.hu/portal_javascripts/register_function.js?original=1
var bugRiddenCrashPronePieceOfJunk=(navigator.userAgent.indexOf('MSIE 5')!=-1&&navigator.userAgent.indexOf('Mac')!=-1)
var W3CDOM=(!bugRiddenCrashPronePieceOfJunk&&typeof document.getElementsByTagName!='undefined'&&typeof document.createElement!='undefined');var registerEventListener=undefined;if(typeof addEvent!='undefined'){registerEventListener=function(elem,event,func){addEvent(elem,event,func);return true}} else if(window.addEventListener){registerEventListener=function(elem,event,func){elem.addEventListener(event,func,false);return true}} else if(window.attachEvent){registerEventListener=function(elem,event,func){var result=elem.attachEvent("on"+event,func);return result}} else{registerEventListener=function(elem,event,func){return false}}
var unRegisterEventListener=undefined;if(typeof removeEvent!='undefined'){unRegisterEventListener=function(elem,event,func){removeEvent(element,event,func);return true}} else if(window.removeEventListener){unRegisterEventListener=function(elem,event,func){elem.removeEventListener(event,func,false);return true}} else if(window.detachEvent){unRegisterEventListener=function(elem,event,func){var result=elem.detachEvent("on"+event,func);return result}} else{unRegisterEventListener=function(elem,event,func){return false}}
var registerPloneFunction=undefined;if(typeof addDOMLoadEvent!='undefined'){registerPloneFunction=function(func){addDOMLoadEvent(func)}} else{registerPloneFunction=function(func){registerEventListener(window,"load",func)}}
function getContentArea(){if(W3CDOM){var node=document.getElementById('content');if(!node){node=document.getElementById('region-content')}
return node}}


/* - cssQuery.js - */
// http://www.perkor.hu/portal_javascripts/cssQuery.js?original=1
eval(__dEcOdE('9 o=5(){9 1o="2.0.2";9 C=/\\s*,\\s*/;9 o=5(s,1b){try{9 m=[];9 u=1c.callee.1L&&!1b;9 b=(1b)?(1b.constructor==1W)?1b:[1b]:[Z];9 25=Q(s).1E(C),i;M(i=0;i<25.q;i++){s=29(25[i]);B(13&&s.1e(0,3).22("")==" *#"){s=s.1e(2);1b=2d([],b,s[1])}1D 1b=b;9 j=0,t,f,a,c="";T(j<s.q){t=s[j++];f=s[j++];c+=t+f;a="";B(s[j]=="("){T(s[j++]!=")"&&j<s.q){a+=s[j]}a=a.1e(0,-1);c+="("+a+")"}B(t==" "&&f=="*"&&s[j]=="#")1l;1b=(u&&19[c])?19[c]:1M(1b,t,f,a);B(u)19[c]=1b}m=m.concat(1b)}1Q o.1U;6 m}catch(e){o.1U=e;6 []}};o.1A=5(){6 "5 o() {\\n  [1o "+1o+"]\\n}"};9 19={};o.1L=Y;o.clearCache=5(s){B(s){s=29(s).22("");1Q 19[s]}1D 19={}};9 1J={};9 1u=Y;o.14=5(n,s){B(1u)1P("$script="+1S(s));1J[n]=1F s()};o.valueOf=5(c){6 c?1P(c):F};9 y={};9 8={};9 7={X:/\\[([\\w-]+(\\|[\\w-]+)?)\\s*(\\W?=)?\\s*([^\\]]*)\\]/};9 l=[];y[" "]=5(r,f,t,n){9 e,i,j;M(i=0;i<f.q;i++){9 s=x(f[i],t,n);M(j=0;(e=s[j]);j++){B(z(e)&&H(e,n))r.K(e)}}};y["#"]=5(r,f,i){9 e,j;B(f.q==1&&f[0]==Z){9 n=Z.getElementById(i);B(n)r.K(n)}1D{M(j=0;(e=f[j]);j++)B(e.1j==i){r.K(e);1s}}};y["."]=5(r,f,c){c=1F 1y("(^|\\\\s)"+c+"(\\\\s|$)");9 e,i;M(i=0;(e=f[i]);i++)B(c.G(e.1x))r.K(e)};y[":"]=5(r,f,p,a){9 t=8[p],e,i;B(t)M(i=0;(e=f[i]);i++)B(t(e,a))r.K(e)};8["link"]=5(e){9 d=D(e);B(d.1G)M(9 i=0;i<d.1G.q;i++){B(d.1G[i]==e)6 15}};8["visited"]=5(e){};9 z=5(e){6(e&&e.1i==1&&e.1a!="!")?e:20};9 A=5(e){T(e&&(e=e.previousSibling)&&!z(e))1l;6 e};9 h=5(e){T(e&&(e=e.nextSibling)&&!z(e))1l;6 e};9 R=5(e){6 z(e.1q)||h(e.1q)};9 16=5(e){6 z(e.1v)||A(e.1v)};9 12=5(e){9 c=[];e=R(e);T(e){c.K(e);e=h(e)}6 c};9 13=15;9 1H=5(e){9 d=D(e);6(typeof d.1C=="unknown")?/\\.24$/i.G(d.URL):Boolean(d.1C=="XML Document")};9 D=5(e){6 e.ownerDocument||e.Z};9 x=5(e,t){6(t=="*"&&e.1Z)?e.1Z:e.x(t)};9 P=5(e,t,n){B(t=="*")6 z(e);B(!H(e,n))6 Y;B(!1H(e))6 e.1a.1m()==t.1m();6 e.1a==t};9 H=5(e,n){6!n||(n=="*")||(e.scopeName==n)};9 V=5(e){6 e.1w};5 2d(r,f,1j){9 m,i,j;M(i=0;i<f.q;i++){B(m=f[i].1Z.item(1j)){B(m.1j==1j)r.K(m);1D B(m.q!=20){M(j=0;j<m.q;j++){B(m[j].1j==1j)r.K(m[j])}}}}6 r};B(![].K)1W.prototype.K=5(){M(9 i=0;i<1c.q;i++){F[F.q]=1c[i]}6 F.q};9 N=/\\|/;5 1M(1b,t,f,a){B(N.G(f)){f=f.1E(N);a=f[0];f=f[1]}9 r=[];B(y[t]){y[t](r,1b,f,a)}6 r};9 S=/^[^\\s>+~]/;9 2e=/[\\s#.:>+~()@]|[^\\s#.:>+~()@]+/g;5 29(s){B(S.G(s))s=" "+s;6 s.X(2e)||[]};9 W=/\\s*([\\s>+~(),]|^|$)\\s*/g;9 I=/([\\s>+~,]|[^(]\\+|^)([#.:@])/g;9 Q=5(s){6 s.O(W,"$1").O(I,"$1*$2")};9 1I={1A:5(){6 "\'"},X:/^(\'[^\']*\')|("[^"]*")$/,G:5(s){6 F.X.G(s)},28:5(s){6 F.G(s)?s:F+s+F},1N:5(s){6 F.G(s)?s.1e(1,-1):s}};9 1p=5(t){6 1I.1N(t)};9 E=/([\\/()[\\]?{}|*+-])/g;5 J(s){6 s.O(E,"\\\\$1")};o.14("1Y-standard",5(){13=1P("Y;/*@cc_on@B(@\\x5fwin32)13=15@end@*/");B(!13){x=5(e,t,n){6 n?e.getElementsByTagNameNS("*",t):e.x(t)};H=5(e,n){6!n||(n=="*")||(e.prefix==n)};1H=Z.1n? 5(e){6/24/i.G(D(e).1n)}:5(e){6 D(e).18.1a!="HTML"};V=5(e){6 e.textContent||e.1w||2b(e)};5 2b(e){9 t="",n,i;M(i=0;(n=e.1r[i]);i++){1t(n.1i){10 11:10 1:t+=2b(n);1s;10 3:t+=n.nodeValue;1s}}6 t}}});o.14("1Y-level2",5(){y[">"]=5(r,f,t,n){9 e,i,j;M(i=0;i<f.q;i++){9 s=12(f[i]);M(j=0;(e=s[j]);j++)B(P(e,t,n))r.K(e)}};y["+"]=5(r,f,t,n){M(9 i=0;i<f.q;i++){9 e=h(f[i]);B(e&&P(e,t,n))r.K(e)}};y["@"]=5(r,f,a){9 t=l[a].G;9 e,i;M(i=0;(e=f[i]);i++)B(t(e))r.K(e)};8["first-1g"]=5(e){6!A(e)};8["1O"]=5(e,c){c=1F 1y("^"+c,"i");T(e&&!e.L("1O"))e=e.17;6 e&&c.G(e.L("1O"))};7.1V=/\\\\:/g;7.1z="@";7.U={};7.O=5(m,a,n,c,v){9 k=F.1z+m;B(!l[k]){a=F.1R(a,c||"",v||"");l[k]=a;l.K(a)}6 l[k].1j};7.1T=5(s){s=s.O(F.1V,"|");9 m;T(m=s.X(F.X)){9 r=F.O(m[0],m[1],m[2],m[3],m[4]);s=s.O(F.X,r)}6 s};7.1R=5(p,t,v){9 a={};a.1j=F.1z+l.q;a.name=p;t=F.U[t];t=t?t(F.L(p),1p(v)):Y;a.G=1F Function("e","6 "+t);6 a};7.L=5(n){1t(n.toLowerCase()){10 "1j":6 "e.1j";10 "class":6 "e.1x";10 "M":6 "e.htmlFor";10 "23":B(13){6 "1S((e.outerHTML.X(/23=\\\\1X?([^\\\\s\\\\1X]*)\\\\1X?/)||[])[1]||\'\')"}}6 "e.L(\'"+n.O(N,":")+"\')"};7.U[""]=5(a){6 a};7.U["="]=5(a,v){6 a+"=="+1I.28(v)};7.U["~="]=5(a,v){6 "/(^| )"+J(v)+"( |$)/.G("+a+")"};7.U["|="]=5(a,v){6 "/^"+J(v)+"(-|$)/.G("+a+")"};9 2c=Q;Q=5(s){6 2c(7.1T(s))}});o.14("1Y-level3",5(){y["~"]=5(r,f,t,n){9 e,i;M(i=0;(e=f[i]);i++){T(e=h(e)){B(P(e,t,n))r.K(e)}}};8["contains"]=5(e,t){t=1F 1y(J(1p(t)));6 t.G(V(e))};8["root"]=5(e){6 e==D(e).18};8["empty"]=5(e){9 n,i;M(i=0;(n=e.1r[i]);i++){B(z(n)||n.1i==3)6 Y}6 15};8["21-1g"]=5(e){6!h(e)};8["only-1g"]=5(e){e=e.17;6 R(e)==16(e)};8["not"]=5(e,s){9 n=o(s,D(e));M(9 i=0;i<n.q;i++){B(n[i]==e)6 Y}6 15};8["26-1g"]=5(e,a){6 1h(e,a,A)};8["26-21-1g"]=5(e,a){6 1h(e,a,h)};8["target"]=5(e){6 e.1j==location.hash.1e(1)};8["1K"]=5(e){6 e.1K};8["enabled"]=5(e){6 e.1k===Y};8["1k"]=5(e){6 e.1k};8["1d"]=5(e){6 e.1d};7.U["^="]=5(a,v){6 "/^"+J(v)+"/.G("+a+")"};7.U["$="]=5(a,v){6 "/"+J(v)+"$/.G("+a+")"};7.U["*="]=5(a,v){6 "/"+J(v)+"/.G("+a+")"};5 1h(e,a,t){1t(a){10 "n":6 15;10 "even":a="2n";1s;10 "odd":a="2n+1"}9 27=12(e.17);5 2a(i){9 i=(t==h)?27.q-i:i-1;6 27[i]==e};B(!1f(a))6 2a(a);a=a.1E("n");9 m=1B(a[0]);9 s=1B(a[1]);B((1f(m)||m==1)&&s==0)6 15;B(m==0&&!1f(s))6 2a(s);B(1f(s))s=0;9 c=1;T(e=t(e))c++;B(1f(m)||m==1)6(t==h)?(c<=s):(s>=c);6(c%m)==s}});1u=15;6 o}();',62,139,'',0,{}))

/* - sarissa.js - */
// http://www.perkor.hu/portal_javascripts/sarissa.js?original=1
function Sarissa(){};Sarissa.VERSION="${project.version}";Sarissa.PARSED_OK="Document contains no parsing errors";Sarissa.PARSED_EMPTY="Document is empty";Sarissa.PARSED_UNKNOWN_ERROR="Not well-formed or other error";Sarissa.IS_ENABLED_TRANSFORM_NODE=false;var _sarissa_iNsCounter=0;var _SARISSA_IEPREFIX4XSLPARAM="";var _SARISSA_HAS_DOM_IMPLEMENTATION=document.implementation&&true;var _SARISSA_HAS_DOM_CREATE_DOCUMENT=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.createDocument;var _SARISSA_HAS_DOM_FEATURE=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.hasFeature;var _SARISSA_IS_MOZ=_SARISSA_HAS_DOM_CREATE_DOCUMENT&&_SARISSA_HAS_DOM_FEATURE;var _SARISSA_IS_SAFARI=navigator.userAgent.toLowerCase().indexOf("safari")!=-1||navigator.userAgent.toLowerCase().indexOf("konqueror")!=-1;var _SARISSA_IS_SAFARI_OLD=_SARISSA_IS_SAFARI&&parseInt((navigator.userAgent.match(/AppleWebKit\/(\d+)/)||{})[1])<420;var _SARISSA_IS_IE=document.all&&window.ActiveXObject&&navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1;var _SARISSA_IS_OPERA=navigator.userAgent.toLowerCase().indexOf("opera")!=-1;if(!window.Node||!Node.ELEMENT_NODE){Node={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}};if(_SARISSA_IS_SAFARI_OLD){HTMLHtmlElement=document.createElement("html").constructor;Node=HTMLElement={};HTMLElement.prototype=HTMLHtmlElement.__proto__.__proto__;HTMLDocument=Document=document.constructor;var x=new DOMParser();XMLDocument=x.constructor;Element=x.parseFromString("<Single />","text/xml").documentElement.constructor;x=null}
if(typeof XMLDocument=="undefined"&&typeof Document!="undefined"){XMLDocument=Document}
if(_SARISSA_IS_IE){_SARISSA_IEPREFIX4XSLPARAM="xsl:";var _SARISSA_DOM_PROGID="";var _SARISSA_XMLHTTP_PROGID="";var _SARISSA_DOM_XMLWRITER="";Sarissa.pickRecentProgID=function(idList){var bFound=false,e;for(var i=0;i<idList.length&&!bFound;i++){try{var oDoc=new ActiveXObject(idList[i]);var o2Store=idList[i];bFound=true}catch(objException){e=objException}};if(!bFound){throw "Could not retrieve a valid progID of Class: "+idList[idList.length-1]+". (original exception: "+e+")"};idList=null;return o2Store};_SARISSA_DOM_PROGID=null;_SARISSA_THREADEDDOM_PROGID=null;_SARISSA_XSLTEMPLATE_PROGID=null;_SARISSA_XMLHTTP_PROGID=null;if(!window.XMLHttpRequest){XMLHttpRequest=function(){if(!_SARISSA_XMLHTTP_PROGID){_SARISSA_XMLHTTP_PROGID=Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"])};return new ActiveXObject(_SARISSA_XMLHTTP_PROGID)}};Sarissa.getDomDocument=function(sUri,sName){if(!_SARISSA_DOM_PROGID){_SARISSA_DOM_PROGID=Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"])};var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(sName){var prefix="";if(sUri){if(sName.indexOf(":")>1){prefix=sName.substring(0,sName.indexOf(":"));sName=sName.substring(sName.indexOf(":")+1)}else{prefix="a"+(_sarissa_iNsCounter++)}};if(sUri){oDoc.loadXML('<'+prefix+':'+sName+" xmlns:"+prefix+"=\""+sUri+"\""+" />")} else{oDoc.loadXML('<'+sName+" />")}};return oDoc};Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc&&oDoc.parseError&&oDoc.parseError.errorCode&&oDoc.parseError.errorCode!=0){parseErrorText="XML Parsing Error: "+oDoc.parseError.reason+"\nLocation: "+oDoc.parseError.url+"\nLine Number "+oDoc.parseError.line+", Column "+oDoc.parseError.linepos+":\n"+oDoc.parseError.srcText+"\n";for(var i=0;i<oDoc.parseError.linepos;i++){parseErrorText+="-"};parseErrorText+="^\n"}
else if(oDoc.documentElement==null){parseErrorText=Sarissa.PARSED_EMPTY};return parseErrorText};Sarissa.setXpathNamespaces=function(oDoc,sNsSet){oDoc.setProperty("SelectionLanguage","XPath");oDoc.setProperty("SelectionNamespaces",sNsSet)};XSLTProcessor=function(){if(!_SARISSA_XSLTEMPLATE_PROGID){_SARISSA_XSLTEMPLATE_PROGID=Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0","MSXML2.XSLTemplate.3.0"])};this.template=new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);this.processor=null};XSLTProcessor.prototype.importStylesheet=function(xslDoc){if(!_SARISSA_THREADEDDOM_PROGID){_SARISSA_THREADEDDOM_PROGID=Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0","MSXML2.FreeThreadedDOMDocument.3.0"])};xslDoc.setProperty("SelectionLanguage","XPath");xslDoc.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");var converted=new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);try{converted.resolveExternals=true;converted.setProperty("AllowDocumentFunction",true)}
catch(e){};if(xslDoc.url&&xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']")!=null){converted.async=false;converted.load(xslDoc.url)} else{converted.loadXML(xslDoc.xml)};converted.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");var output=converted.selectSingleNode("//xsl:output");this.outputMethod=output?output.getAttribute("method"):"html";this.template.stylesheet=converted;this.processor=this.template.createProcessor();this.paramsSet=[]};XSLTProcessor.prototype.transformToDocument=function(sourceDoc){if(_SARISSA_THREADEDDOM_PROGID){this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);this.processor.output=outDoc;this.processor.transform();return outDoc}
else{if(!_SARISSA_DOM_XMLWRITER){_SARISSA_DOM_XMLWRITER=Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0","Msxml2.MXXMLWriter.3.0","MSXML2.MXXMLWriter","MSXML.MXXMLWriter","Microsoft.XMLDOM"])};this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_XMLWRITER);this.processor.output=outDoc;this.processor.transform();var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);oDoc.loadXML(outDoc.output+"");return oDoc}};XSLTProcessor.prototype.transformToFragment=function(sourceDoc,ownerDoc){this.processor.input=sourceDoc;this.processor.transform();var s=this.processor.output;var f=ownerDoc.createDocumentFragment();if(this.outputMethod=='text'){f.appendChild(ownerDoc.createTextNode(s))} else if(ownerDoc.body&&ownerDoc.body.innerHTML){var container=ownerDoc.createElement('div');container.innerHTML=s;while(container.hasChildNodes()){f.appendChild(container.firstChild)}}
else{var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(s.substring(0,5)=='<?xml'){s=s.substring(s.indexOf('?>')+2)}
var xml=''.concat('<my>',s,'</my>');oDoc.loadXML(xml);var container=oDoc.documentElement;while(container.hasChildNodes()){f.appendChild(container.firstChild)}}
return f};XSLTProcessor.prototype.setParameter=function(nsURI,name,value){value=value?value:"";if(nsURI){this.processor.addParameter(name,value,nsURI)}else{this.processor.addParameter(name,value)};nsURI=""+(nsURI||"");if(!this.paramsSet[nsURI]){this.paramsSet[nsURI]=new Array()};this.paramsSet[nsURI][name]=value};XSLTProcessor.prototype.getParameter=function(nsURI,name){nsURI=""+(nsURI||"");if(this.paramsSet[nsURI]&&this.paramsSet[nsURI][name]){return this.paramsSet[nsURI][name]}else{return null}};XSLTProcessor.prototype.clearParameters=function(){for(var nsURI in this.paramsSet){for(var name in this.paramsSet[nsURI]){if(nsURI!=""){this.processor.addParameter(name,"",nsURI)}else{this.processor.addParameter(name,"")}}};this.paramsSet=new Array()}}else{if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){Sarissa.__handleLoad__=function(oDoc){Sarissa.__setReadyState__(oDoc,4)};_sarissa_XMLDocument_onload=function(){Sarissa.__handleLoad__(this)};Sarissa.__setReadyState__=function(oDoc,iReadyState){oDoc.readyState=iReadyState;oDoc.readystate=iReadyState;if(oDoc.onreadystatechange!=null&&typeof oDoc.onreadystatechange=="function"){oDoc.onreadystatechange()}};Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);if(!oDoc.onreadystatechange){oDoc.onreadystatechange=null};if(!oDoc.readyState){oDoc.readyState=0};oDoc.addEventListener("load",_sarissa_XMLDocument_onload,false);return oDoc};if(window.XMLDocument){}
else if(_SARISSA_HAS_DOM_FEATURE&&window.Document&&!Document.prototype.load&&document.implementation.hasFeature('LS','3.0')){Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);return oDoc}}
else{Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:null,sName?sName:null,null);if(oDoc&&(sUri||sName)&&!oDoc.documentElement){oDoc.appendChild(oDoc.createElementNS(sUri,sName))};return oDoc}}}};if(!window.DOMParser){if(_SARISSA_IS_SAFARI){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var xmlhttp=new XMLHttpRequest();xmlhttp.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(sXml),false);xmlhttp.send(null);return xmlhttp.responseXML}}else if(Sarissa.getDomDocument&&Sarissa.getDomDocument()&&Sarissa.getDomDocument(null,"bar").xml){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var doc=Sarissa.getDomDocument();doc.loadXML(sXml);return doc}}};if((typeof(document.importNode)=="undefined")&&_SARISSA_IS_IE){try{document.importNode=function(oNode,bChildren){var tmp;if(oNode.nodeName=='#text'){return document.createTextElement(oNode.data)}
else{if(oNode.nodeName=="tbody"||oNode.nodeName=="tr"){tmp=document.createElement("table")}
else if(oNode.nodeName=="td"){tmp=document.createElement("tr")}
else if(oNode.nodeName=="option"){tmp=document.createElement("select")}
else{tmp=document.createElement("div")};if(bChildren){tmp.innerHTML=oNode.xml?oNode.xml:oNode.outerHTML}else{tmp.innerHTML=oNode.xml?oNode.cloneNode(false).xml:oNode.cloneNode(false).outerHTML};return tmp.getElementsByTagName("*")[0]}}}catch(e){}};if(!Sarissa.getParseErrorText){Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(!oDoc.documentElement){parseErrorText=Sarissa.PARSED_EMPTY} else if(oDoc.documentElement.tagName=="parsererror"){parseErrorText=oDoc.documentElement.firstChild.data;parseErrorText+="\n"+oDoc.documentElement.firstChild.nextSibling.firstChild.data} else if(oDoc.getElementsByTagName("parsererror").length>0){var parsererror=oDoc.getElementsByTagName("parsererror")[0];parseErrorText=Sarissa.getText(parsererror,true)+"\n"} else if(oDoc.parseError&&oDoc.parseError.errorCode!=0){parseErrorText=Sarissa.PARSED_UNKNOWN_ERROR};return parseErrorText}};Sarissa.getText=function(oNode,deep){var s="";var nodes=oNode.childNodes;for(var i=0;i<nodes.length;i++){var node=nodes[i];var nodeType=node.nodeType;if(nodeType==Node.TEXT_NODE||nodeType==Node.CDATA_SECTION_NODE){s+=node.data} else if(deep==true&&(nodeType==Node.ELEMENT_NODE||nodeType==Node.DOCUMENT_NODE||nodeType==Node.DOCUMENT_FRAGMENT_NODE)){s+=Sarissa.getText(node,true)}};return s};if(!window.XMLSerializer&&Sarissa.getDomDocument&&Sarissa.getDomDocument("","foo",null).xml){XMLSerializer=function(){};XMLSerializer.prototype.serializeToString=function(oNode){return oNode.xml}};Sarissa.stripTags=function(s){return s.replace(/<[^>]+>/g,"")};Sarissa.clearChildNodes=function(oNode){while(oNode.firstChild){oNode.removeChild(oNode.firstChild)}};Sarissa.copyChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if(_SARISSA_IS_SAFARI&&nodeTo.nodeType==Node.DOCUMENT_NODE){nodeTo=nodeTo.documentElement}
if((!nodeFrom)||(!nodeTo)){throw "Both source and destination nodes must be provided"};if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;var nodes=nodeFrom.childNodes;if(typeof(ownerDoc.importNode)!="undefined"){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}} else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}}};Sarissa.moveChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if((!nodeFrom)||(!nodeTo)){throw "Both source and destination nodes must be provided"};if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var nodes=nodeFrom.childNodes;if(nodeFrom.ownerDocument==nodeTo.ownerDocument){while(nodeFrom.firstChild){nodeTo.appendChild(nodeFrom.firstChild)}} else{var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;if(typeof(ownerDoc.importNode)!="undefined"){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}}else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}};Sarissa.clearChildNodes(nodeFrom)}};Sarissa.xmlize=function(anyObject,objectName,indentSpace){indentSpace=indentSpace?indentSpace:'';var s=indentSpace+'<'+objectName+'>';var isLeaf=false;if(!(anyObject instanceof Object)||anyObject instanceof Number||anyObject instanceof String||anyObject instanceof Boolean||anyObject instanceof Date){s+=Sarissa.escape(""+anyObject);isLeaf=true}else{s+="\n";var isArrayItem=anyObject instanceof Array;for(var name in anyObject){s+=Sarissa.xmlize(anyObject[name],(isArrayItem?"array-item key=\""+name+"\"":name),indentSpace+"   ")};s+=indentSpace};return(s+=(objectName.indexOf(' ')!=-1?"</array-item>\n":"</"+objectName+">\n"))};Sarissa.escape=function(sXml){return sXml.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g, "&quot;").replace(/'/g,"&apos;")};Sarissa.unescape=function(sXml){return sXml.replace(/&apos;/g,"'").replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")};

/* - plone_javascript_variables.js - */
// http://www.perkor.hu/portal_javascripts/plone_javascript_variables.js?original=1
var portal_url='http://www.perkor.hu';var form_modified_message='Az űrlap még nem lett mentve. Minden változtatás elvész';var form_resubmit_message='You already clicked the submit button. Do you really want to submit this form again?';var external_links_open_new_window='false';

/* - nodeutilities.js - */
// http://www.perkor.hu/portal_javascripts/nodeutilities.js?original=1
function wrapNode(node,wrappertype,wrapperclass){var wrapper=document.createElement(wrappertype)
wrapper.className=wrapperclass;var innerNode=node.parentNode.replaceChild(wrapper,node);wrapper.appendChild(innerNode)};
function nodeContained(innernode,outernode){var node=innernode.parentNode;while(node!=document){if(node==outernode){return true}
node=node.parentNode}
return false};
function findContainer(node,func){while(node!=null){if(func(node)){return node}
node=node.parentNode}
return false};
function hasClassName(node,class_name){return new RegExp('\\b'+class_name+'\\b').test(node.className)};
function addClassName(node,class_name){if(!node.className){node.className=class_name} else if(!hasClassName(node,class_name)){var className=node.className+" "+class_name;node.className=className.split(/\s+/).join(' ')}};
function removeClassName(node,class_name){var className=node.className;if(className){className=className.replace(new RegExp('\\b'+class_name+'\\b'),'');className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}};
function replaceClassName(node,old_class,new_class,ignore_missing){if(ignore_missing&&!hasClassName(node,old_class)){addClassName(node,new_class)} else{var className=node.className;if(className){className=className.replace(new RegExp('\\b'+old_class+'\\b'),new_class);className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}}};
function walkTextNodes(node,func,data){if(!node){return false}
if(node.hasChildNodes){for(var i=0;i<node.childNodes.length;i++){walkTextNodes(node.childNodes[i],func,data)}
if(node.nodeType==3){func(node,data)}}};
function getInnerTextCompatible(node){var result=new Array();walkTextNodes(node,
function(n,d){d.push(n.nodeValue)},result);return result.join("")};
function getInnerTextFast(node){if(node.innerText){return node.innerText} else{return getInnerTextCompatible(node)}};
function sortNodes(nodes,fetch_func,cmp_func){if(!W3CDOM){return false};var SortNodeWrapper=function(node){this.value=fetch_func(node);this.cloned_node=node.cloneNode(true);this.toString=function(){if(this.value.toString){return this.value.toString()} else{return this.value}}}
var items=new Array();for(var i=0;i<nodes.length;i++){items.push(new SortNodeWrapper(nodes[i]))}
if(cmp_func){items.sort(cmp_func)} else{items.sort()}
for(var i=0;i<items.length;i++){var dest=nodes[i];dest.parentNode.replaceChild(items[i].cloned_node,dest)}};
function copyChildNodes(srcNode,dstNode){var nodes=srcNode.childNodes;for(var i=0;i<nodes.length;i++){dstNode.appendChild(nodes[i].cloneNode(true))}}


/* - cookie_functions.js - */
// http://www.perkor.hu/portal_javascripts/cookie_functions.js?original=1
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()} else{expires=""}
document.cookie=name+"="+escape(value)+expires+"; path=/;"};
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length)}
if(c.indexOf(nameEQ)==0){return unescape(c.substring(nameEQ.length,c.length))}}
return null};

/* - livesearch.js - */
// http://www.perkor.hu/portal_javascripts/livesearch.js?original=1
var livesearch=function(){var _search_delay=400;var _hide_delay=400;var _search_handlers={};var _LSHighlight="LSHighlight";var _cssQuery=cssQuery;var _registerEventListener=registerEventListener;var _removeClassName=removeClassName;var _addClassName=addClassName;
function _isform($node){if($node.tagName&&($node.tagName=='FORM'||$node.tagName=='form')){return true}
return false};
function _searchfactory($form,$inputnode){var $lastsearch=null;var $request=null;var $cache={};var $querytarget="livesearch_reply?q=";if(typeof portal_url!="undefined"){$querytarget=portal_url+"/"+$querytarget}
var $$result=_cssQuery("div.LSResult",$form);if($$result.length!=1)
return;$$result=$$result[0];var $shadow=_cssQuery("div.LSShadow",$form);if($shadow.length!=1)
return;$shadow=$shadow[0];var $path=_cssQuery("input[name=path]",$form);if($path.length==1){$path=$path[0]} else{$path=null}
function _hide(){$$result.style.display="none";$lastsearch=null};
function _hide_delayed(){window.setTimeout("livesearch.hide('"+$form.id+"')",_hide_delay)};
function _show($data){$$result.style.display="block";$shadow.innerHTML=$data};
function _search(){if($lastsearch==$inputnode.value){return}
if($request&&$request.readyState<4){$request.abort()}
if($inputnode.value.length<2){_hide();return}
if($path&&$path.checked){$$current_path="&path="+encodeURIComponent($path.value)} else{$$current_path=""}
if($cache[$$current_path]){var $data=$cache[$$current_path][$inputnode.value];if($data){_show($data);return}}
$request=new XMLHttpRequest();$request.onreadystatechange=function(){if($request.readyState==4){if($request.status>299||$request.status<200||$request.responseText.length<10){return}
_show($request.responseText);if(!$cache[$$current_path]){$cache[$$current_path]={}}
$cache[$$current_path][$lastsearch]=$request.responseText}};$request.open("GET",$querytarget+encodeURIComponent($inputnode.value)+$$current_path);$lastsearch=$inputnode.value;$request.send(null)};
function _search_delayed(){window.setTimeout("livesearch.search('"+$form.id+"')",_search_delay)};return{hide:_hide,hide_delayed:_hide_delayed,search:_search,search_delayed:_search_delayed}};
function _keyhandlerfactory($form){var $timeout=null;var $$result=_cssQuery("div.LSResult",$form);if($$result.length!=1)
return;$$result=$$result[0];var $shadow=_cssQuery("div.LSShadow",$form);if($shadow.length!=1)
return;$shadow=$shadow[0];
function _keyUp($event){var $listitems=_cssQuery("li",$shadow);var i;for(i=0;i<$listitems.length;i++){if(hasClassName($listitems[i],_LSHighlight))
break}
if(i<$listitems.length){_removeClassName($listitems[i],_LSHighlight);i--;if(i<0)
i=$listitems.length-1;_addClassName($listitems[i],_LSHighlight)} else{_addClassName($listitems[$listitems.length-1],_LSHighlight)}
if(typeof $event.preventDefault!="undefined")
$event.preventDefault()};
function _keyDown($event){var $listitems=_cssQuery("li",$shadow);var i;for(i=0;i<$listitems.length;i++){if(hasClassName($listitems[i],_LSHighlight))
break}
if(i<$listitems.length){_removeClassName($listitems[i],_LSHighlight);i++;if(i>=$listitems.length)
i=0;_addClassName($listitems[i],_LSHighlight)} else{_addClassName($listitems[0],_LSHighlight)}
if(typeof $event.preventDefault!="undefined")
$event.preventDefault()};
function _keyEscape($event){var $highlights=_cssQuery("li.LSHighlight",$shadow);for(var i=0;i<$highlights.length;i++){_removeClassName($highlights[i],_LSHighlight)}
$$result.style.display="none"};
function _handler($event){if(!$event) var $event=window.event;window.clearTimeout($timeout);switch($event.keyCode){case 38:_keyUp($event);break;case 40:_keyDown($event);break;case 27:_keyEscape($event);break;case 37:break;case 39:break;default:{$timeout=window.setTimeout("livesearch.search('"+$form.id+"')",_search_delay)}}};
function _submit($event){if(!$event) var $event=window.event;var $targets=_cssQuery("li.LSHighlight a",$shadow);if($targets.length>0){var $target=$targets[0].href;if(!$target)
return true;window.location=$target;return false}
return true};return{handler:_handler,submit:_submit}};
function _setup($inputnode,$number){var $form=findContainer($inputnode,_isform);$form.id="livesearch"+$number;$form.style['white-space']='nowrap';$inputnode.setAttribute("autocomplete","off");var $key_handler=_keyhandlerfactory($form);_search_handlers[$form.id]=_searchfactory($form,$inputnode);$form.onsubmit=$key_handler.submit;_registerEventListener($inputnode,"keydown",$key_handler.handler);_registerEventListener($inputnode,"focus",_search_handlers[$form.id].search_delayed);_registerEventListener($inputnode,"blur",_search_handlers[$form.id].hide_delayed)};
function _init(){if(!W3CDOM)
return;var $gadgets=_cssQuery("#searchGadget, input.portlet-search-gadget");for(var i=0;i<$gadgets.length;i++){_setup($gadgets[i],i)}};registerPloneFunction(_init);return{search: function(id){_search_handlers[id].search()},hide: function(id){_search_handlers[id].hide()}}}();

/* - select_all.js - */
// http://www.perkor.hu/portal_javascripts/select_all.js?original=1
function selectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=true }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=true}}}}
function deselectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=false }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=false}}}}
function toggleSelect(selectbutton,id,initialState,formName){id=id||'ids:list'
if(selectbutton.isSelected==null){initialState=initialState||false;selectbutton.isSelected=initialState}
if(selectbutton.isSelected==false){selectbutton.setAttribute('src',portal_url+'/select_none_icon.gif');selectbutton.isSelected=true;return selectAll(id,formName)} else{selectbutton.setAttribute('src',portal_url+'/select_all_icon.gif');selectbutton.isSelected=false;return deselectAll(id,formName)}}


/* - dragdropreorder.js - */
// http://www.perkor.hu/portal_javascripts/dragdropreorder.js?original=1
var ploneDnDReorder={}
ploneDnDReorder.dragging=null;ploneDnDReorder.table=null;ploneDnDReorder.rows=null;ploneDnDReorder.isDraggable=function(node){return hasClassName(node,'draggable')};ploneDnDReorder.doDown=function(e){if(!e) var e=window.event;var target=findContainer(this,ploneDnDReorder.isDraggable);if(target==null)
return;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=ploneDnDReorder.doDrag;ploneDnDReorder.dragging=target.parentNode;var dragging=ploneDnDReorder.dragging;dragging._position=ploneDnDReorder.getPos(dragging);addClassName(dragging,"dragging");return false}
ploneDnDReorder.getPos=function(node){var children=node.parentNode.childNodes;var pos=0;for(var i=0;i<children.length;i++){if(node==children[i])
return pos;if(hasClassName(children[i],"draggable"))
pos++}
return null}
ploneDnDReorder.doDrag=function(e){if(!e) var e=window.event;var dragging=ploneDnDReorder.dragging;if(!dragging)
return;var target=this;if(!target)
return;if(target.id!=dragging.id){ploneDnDReorder.swapElements(target,dragging)}
return false}
ploneDnDReorder.swapElements=function(child1,child2){var parent=child1.parentNode;var children=parent.childNodes;var items=new Array();for(var i=0;i<children.length;i++){var node=children[i];items[i]=node;if(node.id){removeClassName(node,"even");removeClassName(node,"odd");if(node.id==child1.id)
items[i]=child2;if(node.id==child2.id)
items[i]=child1}}
Sarissa.clearChildNodes(parent);var pos=0;for(var i=0;i<items.length;i++){var node=parent.appendChild(items[i]);if(node.id){if(pos%2)
addClassName(node,"even");else
addClassName(node,"odd");pos++}}}
ploneDnDReorder.doUp=function(e){if(!e) var e=window.event;var dragging=ploneDnDReorder.dragging;if(!dragging)
return;removeClassName(dragging,"dragging");ploneDnDReorder.updatePositionOnServer();dragging._position=null;try{delete dragging._position} catch(e){}
dragging=null;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=null;return false}
ploneDnDReorder.updatePositionOnServer=function(){var dragging=ploneDnDReorder.dragging;var delta=ploneDnDReorder.getPos(dragging)-dragging._position;if(delta==0)
return;var req=new XMLHttpRequest();req.open("POST","folder_moveitem",true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var item_id=dragging.id.substr('folder-contents-item-'.length);req.send("item_id="+item_id+"&delta:int="+delta)}


/* - collapsiblesections.js - */
// http://www.perkor.hu/portal_javascripts/collapsiblesections.js?original=1
function isCollapsible(node){if(hasClassName(node,'collapsible')){return true}
return false};
function toggleCollapsible(event){if(!event) var event=window.event;if(!this.tagName&&(this.tagName=='DT'||this.tagName=='dt')){return true}
var container=findContainer(this,isCollapsible);if(!container){return true}
if(hasClassName(container,'collapsedBlockCollapsible')){replaceClassName(container,'collapsedBlockCollapsible','expandedBlockCollapsible')} else if(hasClassName(container,'expandedBlockCollapsible')){replaceClassName(container,'expandedBlockCollapsible','collapsedBlockCollapsible')} else if(hasClassName(container,'collapsedInlineCollapsible')){replaceClassName(container,'collapsedInlineCollapsible','expandedInlineCollapsible')} else if(hasClassName(container,'expandedInlineCollapsible')){replaceClassName(container,'expandedInlineCollapsible','collapsedInlineCollapsible')}};
function activateCollapsibles(){if(!W3CDOM){return false}
var collapsibles=cssQuery('dl.collapsible');for(var i=0;i<collapsibles.length;i++){var collapsible=collapsibles[i];var collapsible_header=cssQuery('dt.collapsibleHeader',collapsible)[0];collapsible_header.onclick=toggleCollapsible;if(hasClassName(collapsible,'inline')){if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedInlineCollapsible')} else{addClassName(collapsible,'expandedInlineCollapsible')}} else{if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedBlockCollapsible')} else{addClassName(collapsible,'expandedBlockCollapsible')}}}};registerPloneFunction(activateCollapsibles);

/* - form_tabbing.js - */
// http://www.perkor.hu/portal_javascripts/form_tabbing.js?original=1
var ploneFormTabbing={};ploneFormTabbing.isFormPanel=function(node){if(hasClassName(node,'formPanel')){return true}
return false};ploneFormTabbing._toggleFactory=function(container,tab_ids,panel_ids){return function(e){if(!e) var e=window.event;if(this.tagName.toLowerCase()=='select'){var orig_id=this.value} else{var orig_id=this.id}
var id=orig_id.replace(/^fieldsetlegend-/,"fieldset-")
for(var i=0;i<tab_ids.length;i++){var tab=document.getElementById(tab_ids[i]);if(tab.id==orig_id){addClassName(tab,"selected")} else{removeClassName(tab,"selected")}
var panel=document.getElementById(panel_ids[i]);if(panel.id==id){removeClassName(panel,"hidden")} else{addClassName(panel,"hidden")}}
var current=cssQuery("input[name=fieldset.current]",container);if(current&&current.length){current[0].value=orig_id}
return false}};ploneFormTabbing._buildTabs=function(container,legends){var threshold=6;var tab_ids=[];var panel_ids=[];for(var i=0;i<legends.length;i++){tab_ids[i]=legends[i].id;panel_ids[i]=tab_ids[i].replace(/^fieldsetlegend-/,"fieldset-")}
if(legends.length>threshold){var tabs=document.createElement("select");tabs.onchange=ploneFormTabbing._toggleFactory(container,tab_ids,panel_ids)} else{var tabs=document.createElement("ul")}
tabs.className="formTabs";for(var i=0;i<legends.length;i++){var legend=legends[i];var parent=legend.parentNode;if(legends.length>threshold){var tab=document.createElement("option")} else{var tab=document.createElement("li")}
switch(i){case 0:{tab.className="formTab firstFormTab";break}
case(legends.length-1):{tab.className="formTab lastFormTab";break}
default:{tab.className="formTab";break}}
var text=document.createTextNode(getInnerTextFast(legend));if(legends.length>threshold){tab.appendChild(text);tab.id=legend.id;tab.value=legend.id} else{var a=document.createElement("a");a.id=legend.id;a.href="#"+legend.id;a.onclick=ploneFormTabbing._toggleFactory(container,tab_ids,panel_ids);var span=document.createElement("span");span.appendChild(text);a.appendChild(span);tab.appendChild(a)}
tabs.appendChild(tab);parent.removeChild(legend)}
return tabs};ploneFormTabbing.select=function($which){if(typeof $which=="string"){var id=$which.replace(/^fieldset-/,"fieldsetlegend-")
$which=document.getElementById(id)}
if($which.tagName.toLowerCase()=='a'){$which.onclick();return true} else if($which.tagName.toLowerCase()=='option'){$which.parentNode.value=$which.value;$which.parentNode.onchange();return true} else{$which.onchange();return true}
return false};ploneFormTabbing.initializeDL=function(dl){var dts=cssQuery("> dt",dl);var legends=[];for(var i=0;i<dts.length;i++){legends.push(dts[i])}
var tabs=ploneFormTabbing._buildTabs(dl,legends);dl.parentNode.insertBefore(tabs,dl);var dds=cssQuery("> dd",dl);for(var i=0;i<dds.length;i++){addClassName(dds[i],"formPanel")}
var tabs=cssQuery("li.formTab a,"+"option.formTab",tabs);if(tabs.length>0){ploneFormTabbing.select(tabs[0])}};ploneFormTabbing.initializeForm=function(form){var fieldsets=cssQuery("> fieldset",form);var legends=[];for(var i=0;i<fieldsets.length;i++){var childnodes=fieldsets[i].childNodes;for(var j=0;j<childnodes.length;j++){var child=childnodes[j];if(child.nodeType==1&&child.tagName.toLowerCase()=='legend'){legends.push(child)}}}
if(legends.length==0)
return;var tabs=ploneFormTabbing._buildTabs(form,legends);form.insertBefore(tabs,form.firstChild);for(var i=0;i<fieldsets.length;i++){var fieldset=fieldsets[i];addClassName(fieldset,"formPanel")}
var tab_inited=false;var fieldswitherrors=cssQuery("div.field.error",form);for(var i=0;i<fieldswitherrors.length;i++){var panel=findContainer(fieldswitherrors[i],ploneFormTabbing.isFormPanel);if(!panel){continue}
var id=panel.id.replace(/^fieldset-/,"fieldsetlegend-");var tab=document.getElementById(id);if(tab){addClassName(tab,"notify");tab_inited=ploneFormTabbing.select(tab)}}
var requiredfields=cssQuery("div.field span.fieldRequired",form);for(var i=0;i<requiredfields.length;i++){var panel=findContainer(requiredfields[i],ploneFormTabbing.isFormPanel);if(!panel){continue}
var id=panel.id.replace(/^fieldset-/,"fieldsetlegend-");var tab=document.getElementById(id);if(tab){addClassName(tab,"required")}}
var active_fieldsets=cssQuery("input[name=fieldset.current]");for(var i=0;i<active_fieldsets.length;i++){if(!tab_inited&&active_fieldsets[i].value){tab_inited=ploneFormTabbing.select(active_fieldsets[i].value)}}
var tabs=cssQuery("form.enableFormTabbing li.formTab a,"+"form.enableFormTabbing option.formTab,"+"div.enableFormTabbing li.formTab a,"+"div.enableFormTabbing option.formTab");if(!tab_inited&&tabs.length>0){ploneFormTabbing.select(tabs[0])}
schema_links=document.getElementById("archetypes-schemata-links")
if(schema_links){addClassName(schema_links,"hiddenStructure")}
var buttons=cssQuery("div.formControls input[name=form_previous],\
div.formControls input[name=form_next]");for(var i=0;i<buttons.length;i++){buttons[i].parentNode.removeChild(buttons[i])}};ploneFormTabbing.initialize=function(){var forms=cssQuery("form.enableFormTabbing,"+"div.enableFormTabbing");for(var i=0;i<forms.length;i++){ploneFormTabbing.initializeForm(forms[i])}
var dls=cssQuery("dl.enableFormTabbing");for(var i=0;i<dls.length;i++){ploneFormTabbing.initializeDL(dls[i])}};registerPloneFunction(ploneFormTabbing.initialize);

/* - input-label.js - */
// http://www.perkor.hu/portal_javascripts/input-label.js?original=1
var ploneInputLabel={focus: function(){return function(e){var target;if(!e) var e=window.event;if(e.target) target=e.target;else if(e.srcElement) target=e.srcElement;if(target.nodeType==3)
target=target.parentNode;if(hasClassName(target,"inputLabelActive")&&(target.value==target.title)){target.value='';removeClassName(target,"inputLabelActive")}}},blur: function(){return function(e){var target;if(!e) var e=window.event;if(e.target) target=e.target;else if(e.srcElement) target=e.srcElement;if(target.nodeType==3)
target=target.parentNode;if(target.value==''){addClassName(target,"inputLabelActive");target.value=target.title}}},isForm: function(node){return(node.tagName&&node.tagName.toLowerCase()=='form')},submit: function(){return function(e){var target;if(!e) var e=window.event;if(e.target) target=e.target;else if(e.srcElement) target=e.srcElement;if(target.nodeType==3)
target=target.parentNode;var elements=cssQuery("input[title].inputLabelActive");for(var i=0;i<elements.length;i++){var element=elements[i];if(hasClassName(element,"inputLabelActive")&&(element.value==element.title)){element.value='';removeClassName(element,"inputLabelActive")}}
if(target.inputLabelData.oldsubmit)
return this.inputLabelData.oldsubmit()}},init: function(){var elements=cssQuery("input[title].inputLabel");for(var i=0;i<elements.length;i++){var element=elements[i];var form=findContainer(element,ploneInputLabel.isForm);if(element.value==''){element.value=element.title;replaceClassName(element,"inputLabel","inputLabelActive")}
registerEventListener(element,'focus',ploneInputLabel.focus());registerEventListener(element,'blur',ploneInputLabel.blur());if(form.onsubmit!=ploneInputLabel.submit){if(typeof form.inputLabelData=='undefined')
form.inputLabelData=new Object();form.inputLabelData.oldsubmit=form.onsubmit;form.onsubmit=ploneInputLabel.submit()}}}};registerPloneFunction(ploneInputLabel.init);

/* - highlightsearchterms.js - */
// http://www.perkor.hu/portal_javascripts/highlightsearchterms.js?original=1
function highlightTermInNode(node,word){var contents=node.nodeValue;var index=contents.toLowerCase().indexOf(word.toLowerCase());if(index<0){return false};var parent=node.parentNode;if(parent.className!="highlightedSearchTerm"){var hiword=document.createElement("span");hiword.className="highlightedSearchTerm";hiword.appendChild(document.createTextNode(contents.substr(index,word.length)));parent.insertBefore(document.createTextNode(contents.substr(0,index)),node);parent.insertBefore(hiword,node);parent.insertBefore(document.createTextNode(contents.substr(index+word.length)),node);parent.removeChild(node)}}
function highlightSearchTerms(terms,startnode){if(!W3CDOM){return false};if(!terms){return false};if(!startnode){return false};for(var term_index=0;term_index<terms.length;term_index++){var term=terms[term_index];if(term.length<1)
continue;var term_lower=term.toLowerCase();if(term_lower!='not'&&term_lower!='and'&&term_lower!='or'){walkTextNodes(startnode,highlightTermInNode,term)}}}
function getSearchTermsFromURI(uri){var query;if(typeof decodeURI!='undefined'){query=decodeURI(uri)} else if(typeof unescape!='undefined'){query=unescape(uri)} else{}
var result=new Array();if(window.decodeReferrer){var referrerSearch=decodeReferrer();if(null!=referrerSearch&&referrerSearch.length>0){result=referrerSearch}}
var qfinder=new RegExp("(searchterm|SearchableText)=([^&]*)","gi");var qq=qfinder.exec(query);if(qq&&qq[2]){var terms=qq[2].replace(/\+/g,' ').split(' ');for(var i=0;i<terms.length;i++){if(terms[i]!=''){result.push(terms[i])}}
return result}
return result.length==0?false:result}
function highlightSearchTermsFromURI(){if(!W3CDOM){return false};var terms=getSearchTermsFromURI(window.location.search);var contentarea=getContentArea();highlightSearchTerms(terms,contentarea)}
registerPloneFunction(highlightSearchTermsFromURI);

/* - se-highlight.js - */
// http://www.perkor.hu/portal_javascripts/se-highlight.js?original=1
var searchEngines=[['^http://([^.]+\\.)?google.*','q='],['^http://search\\.yahoo.*','p='],['^http://search\\.msn.*','q='],['^http://search\\.aol.*','userQuery='],['^http://(www\\.)?altavista.*','q='],['^http://(www\\.)?feedster.*','q='],['^http://search\\.lycos.*','query='],['^http://(www\\.)?alltheweb.*','q='],['^http://(www\\.)?ask\\.com.*','q=']]
function decodeReferrer(ref){if(null==ref&&document.referrer){ref=document.referrer}
if(!ref) return null;var match=new RegExp('');var seQuery='';for(var i=0;i<searchEngines.length;i++){if(!match.compile){match=new RegExp(searchEngines[i][0],'i')} else{match.compile(searchEngines[i][0],'i')}
if(ref.match(match)){if(!match.compile){match=new RegExp('^.*[?&]'+searchEngines[i][1]+'([^&]+)&?.*$','i')} else{match.compile('^.*[?&]'+searchEngines[i][1]+'([^&]+)&?.*$')}
seQuery=ref.replace(match,'$1');if(seQuery){seQuery=decodeURIComponent(seQuery);seQuery=seQuery.replace(/\'|"/, '');return seQuery.split(/[\s,\+\.]+/)}}}
return null}


/* - first_input_focus.js - */
// http://www.perkor.hu/portal_javascripts/first_input_focus.js?original=1
function setFocus(){if(!W3CDOM){return false};var $elements=cssQuery("form div.error input,"+"form div.error textarea,"+"form div.error select");if($elements.length>0){$elements[0].focus();return}
$elements=cssQuery("form.enableAutoFocus input[type=text],"+"form.enableAutoFocus textarea");for(var i=0;i<$elements.length;i++){if($elements[i].type=='hidden'){continue}
$elements[i].focus();break}}
if(typeof addDOMLoadEvent!="undefined"){addDOMLoadEvent(setFocus)}


/* - accessibility.js - */
// http://www.perkor.hu/portal_javascripts/accessibility.js?original=1
function setBaseFontSize(fontsize,reset){var body=cssQuery('body')[0];if(reset==1){removeClassName(body,'smallText');removeClassName(body,'largeText');createCookie("fontsize",fontsize,365)}
addClassName(body,fontsize)};
function initBaseFontSize(){var fontsize=readCookie("fontsize");if(fontsize!=null){setBaseFontSize(fontsize,0)}};registerPloneFunction(initBaseFontSize);

/* - styleswitcher.js - */
// http://www.perkor.hu/portal_javascripts/styleswitcher.js?original=1
function setActiveStyleSheet(title,reset){if(!W3CDOM){return false};var i,a,main;for(i=0;(a=document.getElementsByTagName("link")[i]);i++){if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){a.disabled=true;if(a.getAttribute("title")==title){a.disabled=false}}}
if(reset==1){createCookie("wstyle",title,365)}};
function setStyle(){var style=readCookie("wstyle");if(style!=null){setActiveStyleSheet(style,0)}};registerPloneFunction(setStyle);

/* - toc.js - */
// http://www.perkor.hu/portal_javascripts/toc.js?original=1
function walkHeaders(node,func,data){if(!node){return false}
var valid=Array("h1","h2","h3","h4");if(node.hasChildNodes){var child=node.firstChild;while(child){walkHeaders(child,func,data);child=child.nextSibling}
var type=node.tagName;if(type){type=type.toLowerCase();for(var k=0;k<valid.length;k++){if(valid[k]==type){func(node,data);break}}}}}
function locationWithoutHash(){var loc=window.location.href;var hash=window.location.hash;if(!hash){return loc} else{return loc.substring(0,loc.lastIndexOf(hash))}}
function createTableOfContents(){var toc=cssQuery('dl.toc');if(toc.length==0){return}
toc=toc[0];var dest=cssQuery('dl.toc dd.portletItem');if(dest.length==0){return}
dest=dest[0];if(dest.hasChildNodes()){while(dest.childNodes.length>=1){dest.removeChild(dest.firstChild)}}
var content=getContentArea();if(!content){return}
var location=locationWithoutHash();var ols=[];var i=0;var func=function(node,data){if(hasClassName(node,"documentFirstHeading"))
return;var li=document.createElement('li');var link=document.createElement('a');link.appendChild(document.createTextNode(getInnerTextFast(node)));link.href=location+'#section-'+i;li.appendChild(link);var anchor=document.createElement('a');anchor.name='section-'+i;node.parentNode.insertBefore(anchor,node);var level=node.nodeName.substring(1);while(ols.length<level){var ol=document.createElement('ol');if(ols.length>0){ols[ols.length-1].appendChild(ol)}
ols.push(ol)}
while(ols.length>level){ols.pop()}
ols[ols.length-1].appendChild(li);i++}
walkHeaders(content,func);if(ols.length>0){toc.style.display="block";dest.appendChild(ols[0])}}
registerPloneFunction(createTableOfContents);

/* - ++resource++prototype.js - */
// http://www.perkor.hu/portal_javascripts/++resource++prototype.js?original=1
var Prototype={Version:'1.5.0_rc1',BrowserFeatures:{XPath:!!document.evaluate},ScriptFragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyFunction: function(){},K: function(x){return x}}
var Class={create: function(){return function(){this.initialize.apply(this,arguments)}}}
var Abstract=new Object();Object.extend=function(destination,source){for(var property in source){destination[property]=source[property]}
return destination}
Object.extend(Object,{inspect: function(object){try{if(object===undefined) return 'undefined';if(object===null) return 'null';return object.inspect?object.inspect():object.toString()} catch(e){if(e instanceof RangeError) return '...';throw e}},keys: function(object){var keys=[];for(var property in object)
keys.push(property);return keys},values: function(object){var values=[];for(var property in object)
values.push(object[property]);return values},clone: function(object){return Object.extend({},object)}});Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)))}}
Function.prototype.bindAsEventListener=function(object){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[(event||window.event)].concat(args).concat($A(arguments)))}}
Object.extend(Number.prototype,{toColorPart: function(){var digits=this.toString(16);if(this<16) return '0'+digits;return digits},succ: function(){return this+1},times: function(iterator){$R(0,this,true).each(iterator);return this}});var Try={these: function(){var returnValue;for(var i=0;i<arguments.length;i++){var lambda=arguments[i];try{returnValue=lambda();break} catch(e){}}
return returnValue}}
var PeriodicalExecuter=Class.create();PeriodicalExecuter.prototype={initialize: function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback()},registerCallback: function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency * 1000)},stop: function(){if(!this.timer) return;clearInterval(this.timer);this.timer=null},onTimerEvent: function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback(this)} finally{this.currentlyExecuting=false}}}}
Object.extend(String.prototype,{gsub: function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=(replacement(match)||'').toString();source=source.slice(match.index+match[0].length)} else{result+=source,source=''}}
return result},sub: function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern, function(match){if(--count<0) return match[0];return replacement(match)})},scan: function(pattern,iterator){this.gsub(pattern,iterator);return this},truncate: function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this},strip: function(){return this.replace(/^\s+/, '').replace(/\s+$/,'')},stripTags: function(){return this.replace(/<\/?[^>]+>/gi,'')},stripScripts: function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'')},extractScripts: function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1]})},evalScripts: function(){return this.extractScripts().map(function(script){return eval(script)})},escapeHTML: function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML},unescapeHTML: function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?div.childNodes[0].nodeValue:''},toQueryParams: function(){var match=this.strip().match(/[^?]*$/)[0];if(!match) return{};var pairs=match.split('&');return pairs.inject({}, function(params,pairString){var pair=pairString.split('=');var value=pair[1]?decodeURIComponent(pair[1]):undefined;params[decodeURIComponent(pair[0])]=value;return params})},toArray: function(){return this.split('')},camelize: function(){var oStringList=this.split('-');if(oStringList.length==1) return oStringList[0];var camelizedString=this.indexOf('-')==0?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1):oStringList[0];for(var i=1,length=oStringList.length;i<length;i++){var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1)}
return camelizedString},inspect: function(useDoubleQuotes){var escapedString=this.replace(/\\/g,'\\\\');if(useDoubleQuotes)
return '"'+escapedString.replace(/"/g, '\\"') + '"';else
return "'"+escapedString.replace(/'/g, '\\\'')+"'"}});String.prototype.gsub.prepareReplacement=function(replacement){if(typeof replacement=='function') return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)}}
String.prototype.parseQuery=String.prototype.toQueryParams;var Template=Class.create();Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype={initialize: function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern},evaluate: function(object){return this.template.gsub(this.pattern, function(match){var before=match[1];if(before=='\\') return match[2];return before+(object[match[3]]||'').toString()})}}
var $break=new Object();var $continue=new Object();var Enumerable={each: function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++)} catch(e){if(e!=$continue) throw e}})} catch(e){if(e!=$break) throw e}
return this},eachSlice: function(number,iterator){var index=-number,slices=[],array=this.toArray();while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.collect(iterator||Prototype.K)},all: function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||Prototype.K)(value,index);if(!result) throw $break});return result},any: function(iterator){var result=false;this.each(function(value,index){if(result=!!(iterator||Prototype.K)(value,index))
throw $break});return result},collect: function(iterator){var results=[];this.each(function(value,index){results.push(iterator(value,index))});return results},detect: function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break}});return result},findAll: function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value)});return results},grep: function(pattern,iterator){var results=[];this.each(function(value,index){var stringValue=value.toString();if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value,index))})
return results},include: function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break}});return found},inGroupsOf: function(number,fillWith){fillWith=fillWith||null;var results=this.eachSlice(number);if(results.length>0)(number-results.last().length).times(function(){results.last().push(fillWith)});return results},inject: function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index)});return memo},invoke: function(method){var args=$A(arguments).slice(1);return this.collect(function(value){return value[method].apply(value,args)})},max: function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value>=result)
result=value});return result},min: function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value<result)
result=value});return result},partition: function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||Prototype.K)(value,index)?trues:falses).push(value)});return [trues,falses]},pluck: function(property){var results=[];this.each(function(value,index){results.push(value[property])});return results},reject: function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value)});return results},sortBy: function(iterator){return this.collect(function(value,index){return{value:value,criteria:iterator(value,index)}}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0}).pluck('value')},toArray: function(){return this.collect(Prototype.K)},zip: function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index))})},inspect: function(){return '#<Enumerable:'+this.toArray().inspect()+'>'}}
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable) return [];if(iterable.toArray){return iterable.toArray()} else{var results=[];for(var i=0,length=iterable.length;i<length;i++)
results.push(iterable[i]);return results}}
Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)
Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each: function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i])},clear: function(){this.length=0;return this},first: function(){return this[0]},last: function(){return this[this.length-1]},compact: function(){return this.select(function(value){return value!=undefined||value!=null})},flatten: function(){return this.inject([], function(array,value){return array.concat(value&&value.constructor==Array?value.flatten():[value])})},without: function(){var values=$A(arguments);return this.select(function(value){return!values.include(value)})},indexOf: function(object){for(var i=0,length=this.length;i<length;i++)
if(this[i]==object) return i;return-1},reverse: function(inline){return(inline!==false?this:this.toArray())._reverse()},reduce: function(){return this.length>1?this:this[0]},uniq: function(){return this.inject([], function(array,value){return array.include(value)?array:array.concat([value])})},clone: function(){return [].concat(this)},inspect: function(){return '['+this.map(Object.inspect).join(', ')+']'}});Array.prototype.toArray=Array.prototype.clone;var Hash={_each: function(iterator){for(var key in this){var value=this[key];if(typeof value=='function') continue;var pair=[key,value];pair.key=key;pair.value=value;iterator(pair)}},keys: function(){return this.pluck('key')},values: function(){return this.pluck('value')},merge: function(hash){return $H(hash).inject(this, function(mergedHash,pair){mergedHash[pair.key]=pair.value;return mergedHash})},toQueryString: function(){return this.map(function(pair){if(!pair.value&&pair.value!==0) pair[1]='';if(!pair.key) return;return pair.map(encodeURIComponent).join('=')}).join('&')},inspect: function(){return '#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ')}).join(', ')+'}>'}}
function $H(object){var hash=Object.extend({},object||{});Object.extend(hash,Enumerable);Object.extend(hash,Hash);return hash}
ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize: function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive},_each: function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ()}},include: function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive)}
var Ajax={getTransport: function(){return Try.these(
function(){return new XMLHttpRequest()},
function(){return new ActiveXObject('Msxml2.XMLHTTP')},
function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false},activeRequestCount:0}
Ajax.Responders={responders:[],_each: function(iterator){this.responders._each(iterator)},register: function(responder){if(!this.include(responder))
this.responders.push(responder)},unregister: function(responder){this.responders=this.responders.without(responder)},dispatch: function(callback,request,transport,json){this.each(function(responder){if(typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport,json])} catch(e){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate: function(){Ajax.activeRequestCount++},onComplete: function(){Ajax.activeRequestCount--}});Ajax.Base=function(){};Ajax.Base.prototype={setOptions: function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:''}
Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();this.options.parameters=$H(typeof this.options.parameters=='string'?this.options.parameters.toQueryParams():this.options.parameters)}}
Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{initialize: function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url)},request: function(url){var params=this.options.parameters;if(params.any()) params['_']='';if(!['get','post'].include(this.options.method)){params['_method']=this.options.method;this.options.method='post'}
this.url=url;if(this.options.method=='get'&&params.any())
this.url+=(this.url.indexOf('?')>=0?'&':'?')+params.toQueryString();try{Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.options.method.toUpperCase(),this.url,this.options.asynchronous,this.options.username,this.options.password);if(this.options.asynchronous)
setTimeout(function(){this.respondToReadyState(1)}.bind(this),10);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();var body=this.options.method=='post'?(this.options.postBody||params.toQueryString()):null;this.transport.send(body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange()}
catch(e){this.dispatchException(e)}},onStateChange: function(){var readyState=this.transport.readyState;if(readyState>1)
this.respondToReadyState(this.transport.readyState)},setRequestHeaders: function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.options.method=='post'){headers['Content-type']=this.options.contentType+(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close'}
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function')
for(var i=0;i<extras.length;i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){headers[pair.key]=pair.value})}
for(var name in headers)
this.transport.setRequestHeader(name,headers[name])},success: function(){return!this.transport.status||(this.transport.status>=200&&this.transport.status<300)},respondToReadyState: function(readyState){var state=Ajax.Request.Events[readyState];var transport=this.transport,json=this.evalJSON();if(state=='Complete'){try{(this.options['on'+this.transport.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(transport,json)} catch(e){this.dispatchException(e)}}
try{(this.options['on'+state]||Prototype.emptyFunction)(transport,json);Ajax.Responders.dispatch('on'+state,this,transport,json)} catch(e){this.dispatchException(e)}
if(state=='Complete'){if((this.getHeader('Content-type')||'').strip().
match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalResponse();this.transport.onreadystatechange=Prototype.emptyFunction}},getHeader: function(name){try{return this.transport.getResponseHeader(name)} catch(e){return null}},evalJSON: function(){try{var json=this.getHeader('X-JSON');return json?eval('('+json+')'):null} catch(e){return null}},evalResponse: function(){try{return eval(this.transport.responseText)} catch(e){this.dispatchException(e)}},dispatchException: function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception)}});Ajax.Updater=Class.create();Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize: function(container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))}
this.transport=Ajax.getTransport();this.setOptions(options);var onComplete=this.options.onComplete||Prototype.emptyFunction;this.options.onComplete=(function(transport,param){this.updateContent();onComplete(transport,param)}).bind(this);this.request(url)},updateContent: function(){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responseText;if(!this.options.evalScripts) response=response.stripScripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver,response);else
receiver.update(response)}
if(this.success()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10)}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize: function(container,url,options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start()},start: function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop: function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete: function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText?this.decay * this.options.decay:1);this.lastText=request.responseText}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay * this.frequency * 1000)},onTimerEvent: function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});
function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements}
if(typeof element=='string')
element=document.getElementById(element);return Element.extend(element)}
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,len=query.snapshotLength;i<len;i++)
results.push(query.snapshotItem(i));return results}}
document.getElementsByClassName=function(className,parentElement){if(Prototype.BrowserFeatures.XPath){var q=".//*[contains(concat(' ', @class, ' '), ' "+className+" ')]";return document._getElementsByXPath(q,parentElement)} else{var children=($(parentElement)||document.body).getElementsByTagName('*');var elements=[],child;for(var i=0,length=children.length;i<length;i++){child=children[i];if(Element.hasClassName(child,className))
elements.push(Element.extend(child))}
return elements}}
if(!window.Element)
var Element=new Object();Element.extend=function(element){if(!element) return;if(_nativeExtensions||element.nodeType==3) return element;if(!element._extended&&element.tagName&&element!=window){var methods=Object.clone(Element.Methods),cache=Element.extend.cache;if(element.tagName=='FORM')
Object.extend(methods,Form.Methods);if(['INPUT','TEXTAREA','SELECT'].include(element.tagName))
Object.extend(methods,Form.Element.Methods);for(var property in methods){var value=methods[property];if(typeof value=='function')
element[property]=cache.findOrStore(value)}
var methods=Object.clone(Element.Methods.Simulated),cache=Element.extend.cache;for(var property in methods){var value=methods[property];if('function'==typeof value&&!(property in element))
element[property]=cache.findOrStore(value)}}
element._extended=true;return element}
Element.extend.cache={findOrStore: function(value){return this[value]=this[value]|| function(){return value.apply(null,[this].concat($A(arguments)))}}}
Element.Methods={visible: function(element){return $(element).style.display!='none'},toggle: function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element},hide: function(element){$(element).style.display='none';return element},show: function(element){$(element).style.display='';return element},remove: function(element){element=$(element);element.parentNode.removeChild(element);return element},update: function(element,html){html=typeof html=='undefined'?'':html.toString();$(element).innerHTML=html.stripScripts();setTimeout(function(){html.evalScripts()},10);return element},replace: function(element,html){element=$(element);if(element.outerHTML){element.outerHTML=html.stripScripts()} else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),element)}
setTimeout(function(){html.evalScripts()},10);return element},inspect: function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value) result+=' '+attribute+'='+value.inspect(true)});return result+'>'},recursivelyCollect: function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements},ancestors: function(element){return $(element).recursivelyCollect('parentNode')},descendants: function(element){element=$(element);return $A(element.getElementsByTagName('*'))},previousSiblings: function(element){return $(element).recursivelyCollect('previousSibling')},nextSiblings: function(element){return $(element).recursivelyCollect('nextSibling')},siblings: function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings())},match: function(element,selector){element=$(element);if(typeof selector=='string')
selector=new Selector(selector);return selector.match(element)},up: function(element,expression,index){return Selector.findElement($(element).ancestors(),expression,index)},down: function(element,expression,index){return Selector.findElement($(element).descendants(),expression,index)},previous: function(element,expression,index){return Selector.findElement($(element).previousSiblings(),expression,index)},next: function(element,expression,index){return Selector.findElement($(element).nextSiblings(),expression,index)},getElementsBySelector: function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args)},getElementsByClassName: function(element,className){element=$(element);return document.getElementsByClassName(className,element)},getHeight: function(element){element=$(element);return element.offsetHeight},classNames: function(element){return new Element.ClassNames(element)},hasClassName: function(element,className){if(!(element=$(element))) return;var elementClassName=element.className;if(elementClassName.length==0) return false;if(elementClassName==className||elementClassName.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
return true;return false},addClassName: function(element,className){if(!(element=$(element))) return;Element.classNames(element).add(className);return element},removeClassName: function(element,className){if(!(element=$(element))) return;Element.classNames(element).remove(className);return element},observe: function(){Event.observe.apply(Event,arguments);return $A(arguments).first()},stopObserving: function(){Event.stopObserving.apply(Event,arguments);return $A(arguments).first()},cleanWhitespace: function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode}
return element},empty: function(element){return $(element).innerHTML.match(/^\s*$/)},childOf: function(element,ancestor){element=$(element),ancestor=$(ancestor);while(element=element.parentNode)
if(element==ancestor) return true;return false},scrollTo: function(element){element=$(element);var x=element.x?element.x:element.offsetLeft,y=element.y?element.y:element.offsetTop;window.scrollTo(x,y);return element},getStyle: function(element,style){element=$(element);var value=element.style[style.camelize()];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(style):null} else if(element.currentStyle){value=element.currentStyle[style.camelize()]}}
if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static') value='auto';return value=='auto'?null:value},setStyle: function(element,style){element=$(element);for(var name in style)
element.style[name.camelize()]=style[name];return element},getDimensions: function(element){element=$(element);if(Element.getStyle(element,'display')!='none')
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;els.visibility='hidden';els.position='absolute';els.display='';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display='none';els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight}},makePositioned: function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0}}
return element},undoPositioned: function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right=''}
return element},makeClipping: function(element){element=$(element);if(element._overflow) return element;element._overflow=element.style.overflow||'auto';if((Element.getStyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden';return element},undoClipping: function(element){element=$(element);if(!element._overflow) return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element}}
Element.Methods.Simulated={hasAttribute: function(element,attribute){return $(element).getAttributeNode(attribute).specified}}
if(document.all){Element.Methods.update=function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();var tagName=element.tagName.toUpperCase();if(['THEAD','TBODY','TR','TD'].indexOf(tagName)>-1){var div=document.createElement('div');switch(tagName){case 'THEAD':case 'TBODY':div.innerHTML='<table><tbody>'+html.stripScripts()+'</tbody></table>';depth=2;break;case 'TR':div.innerHTML='<table><tbody><tr>'+html.stripScripts()+'</tr></tbody></table>';depth=3;break;case 'TD':div.innerHTML='<table><tbody><tr><td>'+html.stripScripts()+'</td></tr></tbody></table>';depth=4}
$A(element.childNodes).each(function(node){element.removeChild(node)});depth.times(function(){div=div.firstChild});$A(div.childNodes).each(
function(node){element.appendChild(node)})} else{element.innerHTML=html.stripScripts()}
setTimeout(function(){html.evalScripts()},10);return element}}
Object.extend(Element,Element.Methods);var _nativeExtensions=false;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
['','Form','Input','TextArea','Select'].each(function(tag){var className='HTML'+tag+'Element';if(window[className]) return;var klass=window[className]={};klass.prototype=document.createElement(tag?tag.toLowerCase():'div').__proto__});Element.addMethods=function(methods){Object.extend(Element.Methods,methods||{});
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;var cache=Element.extend.cache;for(var property in methods){var value=methods[property];if(!onlyIfAbsent||!(property in destination))
destination[property]=cache.findOrStore(value)}}
if(typeof HTMLElement!='undefined'){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);copy(Form.Methods,HTMLFormElement.prototype);[HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement].each(function(klass){copy(Form.Element.Methods,klass.prototype)});_nativeExtensions=true}}
var Toggle=new Object();Toggle.display=Element.toggle;Abstract.Insertion=function(adjacency){this.adjacency=adjacency}
Abstract.Insertion.prototype={initialize: function(element,content){this.element=$(element);this.content=content.stripScripts();if(this.adjacency&&this.element.insertAdjacentHTML){try{this.element.insertAdjacentHTML(this.adjacency,this.content)} catch(e){var tagName=this.element.tagName.toLowerCase();if(tagName=='tbody'||tagName=='tr'){this.insertContent(this.contentFromAnonymousTable())} else{throw e}}} else{this.range=this.element.ownerDocument.createRange();if(this.initializeRange) this.initializeRange();this.insertContent([this.range.createContextualFragment(this.content)])}
setTimeout(function(){content.evalScripts()},10)},contentFromAnonymousTable: function(){var div=document.createElement('div');div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';return $A(div.childNodes[0].childNodes[0].childNodes)}}
var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange: function(){this.range.setStartBefore(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element)}).bind(this))}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(true)},insertContent: function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild)}).bind(this))}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment)}).bind(this))}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange: function(){this.range.setStartAfter(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling)}).bind(this))}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize: function(element){this.element=$(element)},_each: function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0})._each(iterator)},set: function(className){this.element.className=className},add: function(classNameToAdd){if(this.include(classNameToAdd)) return;this.set($A(this).concat(classNameToAdd).join(' '))},remove: function(classNameToRemove){if(!this.include(classNameToRemove)) return;this.set($A(this).without(classNameToRemove).join(' '))},toString: function(){return $A(this).join(' ')}}
Object.extend(Element.ClassNames.prototype,Enumerable);var Selector=Class.create();Selector.prototype={initialize: function(expression){this.params={classNames:[]};this.expression=expression.toString().strip();this.parseExpression();this.compileMatcher()},parseExpression: function(){
function abort(message){throw 'Parse error in selector: '+message}
if(this.expression=='') abort('empty expression');var params=this.params,expr=this.expression,match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||''});expr=match[1]}
if(expr=='*') return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1],clause=match[2],rest=match[3];switch(modifier){case '#':params.id=clause;break;case '.':params.classNames.push(clause);break;case '':case undefined:params.tagName=clause.toUpperCase();break;default:abort(expr.inspect())}
expr=rest}
if(expr.length>0) abort(expr.inspect())},buildMatchExpression: function(){var params=this.params,conditions=[],clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.id == '+clause.inspect());if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase() == '+clause.inspect());if((clause=params.classNames).length>0)
for(var i=0;i<clause.length;i++)
conditions.push('Element.hasClassName(element, '+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.getAttribute('+attribute.name.inspect()+')';var splitValueBy=function(delimiter){return value+' && '+value+'.split('+delimiter.inspect()+')'}
switch(attribute.operator){case '=':conditions.push(value+' == '+attribute.value.inspect());break;case '~=':conditions.push(splitValueBy(' ')+'.include('+attribute.value.inspect()+')');break;case '|=':conditions.push(splitValueBy('-')+'.first().toUpperCase() == '+attribute.value.toUpperCase().inspect());break;case '!=':conditions.push(value+' != '+attribute.value.inspect());break;case '':case undefined:conditions.push(value+' != null');break;default:throw 'Unknown operator '+attribute.operator+' in selector'}})}
return conditions.join(' && ')},compileMatcher: function(){this.match=new Function('element','if(!element.tagName) return false;\
return '+this.buildMatchExpression())},findElements: function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element,scope))
return [element];scope=(scope||document).getElementsByTagName(this.params.tagName||'*');var results=[];for(var i=0,length=scope.length;i<length;i++)
if(this.match(element=scope[i]))
results.push(Element.extend(element));return results},toString: function(){return this.expression}}
Object.extend(Selector,{matchElements: function(elements,expression){var selector=new Selector(expression);return elements.select(selector.match.bind(selector)).collect(Element.extend)},findElement: function(elements,expression,index){if(typeof expression=='number') index=expression,expression=false;return Selector.matchElements(elements,expression||'*')[index||0]},findChildElements: function(element,expressions){return expressions.map(function(expression){return expression.strip().split(/\s+/).inject([null], function(results,expr){var selector=new Selector(expr);return results.inject([], function(elements,result){return elements.concat(selector.findElements(result||element))})})}).flatten()}});
function $$(){return Selector.findChildElements(document,$A(arguments))}
var Form={reset: function(form){$(form).reset();return form},serializeElements: function(elements){return elements.inject([], function(queryComponents,element){var queryComponent=Form.Element.serialize(element);if(queryComponent) queryComponents.push(queryComponent);return queryComponents}).join('&')}};Form.Methods={serialize: function(form){return Form.serializeElements($(form).getElements())},getElements: function(form){return $A($(form).getElementsByTagName('*')).inject([],
function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements})},getInputs: function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)
return inputs;var matchingInputs=new Array();for(var i=0,length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input))}
return matchingInputs},disable: function(form){form=$(form);form.getElements().each(function(element){element.blur();element.disabled='true'});return form},enable: function(form){form=$(form);form.getElements().each(function(element){element.disabled=''});return form},findFirstElement: function(form){return $(form).getElements().find(function(element){return element.type!='hidden'&&!element.disabled&&['input','select','textarea'].include(element.tagName.toLowerCase())})},focusFirstElement: function(form){form=$(form);form.findFirstElement().activate();return form}}
Object.extend(Form,Form.Methods);Form.Element={focus: function(element){$(element).focus();return element},select: function(element){$(element).select();return element}}
Form.Element.Methods={serialize: function(element){element=$(element);if(element.disabled) return '';var method=element.tagName.toLowerCase();var parameter=Form.Element.Serializers[method](element);if(parameter){var key=encodeURIComponent(parameter[0]);if(key.length==0) return;if(parameter[1].constructor!=Array)
parameter[1]=[parameter[1]];return parameter[1].map(function(value){return key+'='+encodeURIComponent(value)}).join('&')}},getValue: function(element){element=$(element);var method=element.tagName.toLowerCase();var parameter=Form.Element.Serializers[method](element);if(parameter)
return parameter[1]},clear: function(element){$(element).value='';return element},present: function(element){return $(element).value!=''},activate: function(element){element=$(element);element.focus();if(element.select)
element.select();return element},disable: function(element){element=$(element);element.disabled=true;return element},enable: function(element){element=$(element);element.blur();element.disabled=false;return element}}
Object.extend(Form.Element,Form.Element.Methods);var Field=Form.Element;Form.Element.Serializers={input: function(element){switch(element.type.toLowerCase()){case 'checkbox':case 'radio':return Form.Element.Serializers.inputSelector(element);default:return Form.Element.Serializers.textarea(element)}
return false},inputSelector: function(element){if(element.checked)
return [element.name,element.value]},textarea: function(element){return [element.name,element.value]},select: function(element){return Form.Element.Serializers[element.type=='select-one'?'selectOne':'selectMany'](element)},selectOne: function(element){var value='',opt,index=element.selectedIndex;if(index>=0){opt=Element.extend(element.options[index]);value=opt.hasAttribute('value')?opt.value:opt.text}
return [element.name,value]},selectMany: function(element){var value=[];for(var i=0;i<element.length;i++){var opt=Element.extend(element.options[i]);if(opt.selected)
value.push(opt.hasAttribute('value')?opt.value:opt.text)}
return [element.name,value]}}
var $F=Form.Element.getValue;Abstract.TimedObserver=function(){}
Abstract.TimedObserver.prototype={initialize: function(element,frequency,callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastValue=this.getValue();this.registerCallback()},registerCallback: function(){setInterval(this.onTimerEvent.bind(this),this.frequency * 1000)},onTimerEvent: function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value}}}
Form.Element.Observer=Class.create();Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue: function(){return Form.Element.getValue(this.element)}});Form.Observer=Class.create();Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue: function(){return Form.serialize(this.element)}});Abstract.EventObserver=function(){}
Abstract.EventObserver.prototype={initialize: function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element)},onElementEvent: function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value}},registerFormCallbacks: function(){Form.getElements(this.element).each(this.registerCallback.bind(this))},registerCallback: function(element){if(element.type){switch(element.type.toLowerCase()){case 'checkbox':case 'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break}}}}
Form.Element.EventObserver=Class.create();Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue: function(){return Form.Element.getValue(this.element)}});Form.EventObserver=Class.create();Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue: function(){return Form.serialize(this.element)}});if(!window.Event){var Event=new Object()}
Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,element: function(event){return event.target||event.srcElement},isLeftClick: function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)))},pointerX: function(event){return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft))},pointerY: function(event){return event.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop))},stop: function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation()} else{event.returnValue=false;event.cancelBubble=true}},findElement: function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element},observers:false,_observeAndCache: function(element,name,observer,useCapture){if(!this.observers) this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture)} else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer)}},unloadCache: function(){if(!Event.observers) return;for(var i=0,length=Event.observers.length;i<length;i++){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i][0]=null}
Event.observers=false},observe: function(element,name,observer,useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';Event._observeAndCache(element,name,observer,useCapture)},stopObserving: function(element,name,observer,useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture)} else if(element.detachEvent){try{element.detachEvent('on'+name,observer)} catch(e){}}}});if(navigator.appVersion.match(/\bMSIE\b/))
Event.observe(window,'unload',Event.unloadCache,false);var Position={includeScrollOffsets:false,prepare: function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},realOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode} while(element);return [valueL,valueT]},cumulativeOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent} while(element);return [valueL,valueT]},positionedOffset: function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName=='BODY') break;var p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute') break}} while(element);return [valueL,valueT]},offsetParent: function(element){if(element.offsetParent) return element.offsetParent;if(element==document.body) return element;while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return element;return document.body},within: function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth)},withinIncludingScrolloffsets: function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth)},overlap: function(mode,element){if(!mode) return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth},page: function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute') break} while(element=element.offsetParent);element=forElement;do{if(!window.opera||element.tagName=='BODY'){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0}} while(element=element.parentNode);return [valueL,valueT]},clone: function(source,target){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{})
source=$(source);var p=Position.page(source);target=$(target);var delta=[0,0];var parent=null;if(Element.getStyle(target,'position')=='absolute'){parent=Position.offsetParent(target);delta=Position.page(parent)}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop}
if(options.setLeft) target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop) target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth) target.style.width=source.offsetWidth+'px';if(options.setHeight) target.style.height=source.offsetHeight+'px'},absolutize: function(element){element=$(element);if(element.style.position=='absolute') return;Position.prepare();var offsets=Position.positionedOffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px'},relativize: function(element){element=$(element);if(element.style.position=='relative') return;Position.prepare();element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth}}
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)){Position.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute') break;element=element.offsetParent} while(element);return [valueL,valueT]}}
Element.addMethods();

/* - ++resource++effects.js - */
// http://www.perkor.hu/portal_javascripts/++resource++effects.js?original=1
String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()} while(++i<3)} else{if(this.slice(0,1)=='#'){if(this.length==4) for(var i=1;i<4;i++) color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7) color=this.toLowerCase()}}
return(color.length==7?color:(arguments[0]||this))}
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect( function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''))}).flatten().join('')}
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect( function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''))}).flatten().join('')}
Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);return element}
Element.getOpacity=function(element){element=$(element);var opacity;if(opacity=element.getStyle('opacity'))
return parseFloat(opacity);if(opacity=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(opacity[1]) return parseFloat(opacity[1])/100;return 1.0}
Element.setOpacity=function(element,value){element=$(element);if(value==1){element.setStyle({opacity:(/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1.0});if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.setStyle({filter:Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')})} else{if(value<0.00001) value=0;element.setStyle({opacity:value});if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.setStyle({filter:element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')'})}
return element}
Element.getInlineOpacity=function(element){return $(element).style.opacity||''}
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n)} catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)})}
var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},tagifyText: function(element){if(typeof Builder=='undefined')
throw("Effect.tagifyText requires including script.aculo.us' builder.js library");var tagifyStyle='position:relative';if(/MSIE/.test(navigator.userAgent)&&!window.opera) tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each( function(child){if(child.nodeType==3){child.nodeValue.toArray().each( function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child)});Element.remove(child)}})},multiple: function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each( function(element,index){new effect(element,Object.extend(options,{delay:index * options.speed+masterDelay}))})},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle: function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options)}};var Effect2=Effect;Effect.Transitions={linear:Prototype.K,sinoidal: function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5},reverse: function(pos){return 1-pos},flicker: function(pos){return((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4},wobble: function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5},pulse: function(pos,pulses){pulses=pulses||5;return(Math.round((pos%(1/pulses)) * pulses)==0?((pos * pulses * 2)-Math.floor(pos * pulses * 2)):1-((pos * pulses * 2)-Math.floor(pos * pulses * 2)))},none: function(pos){return 0},full: function(pos){return 1}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize: function(){this.effects=[];this.interval=null},_each: function(iterator){this.effects._each(iterator)},add: function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case 'front':this.effects.findAll(function(e){return e.state=='idle'}).each( function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn});break;case 'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case 'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),40)},remove: function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop: function(){var timePos=new Date().getTime();this.effects.invoke('loop',timePos)}});Effect.Queues={instances:$H(),get: function(queueName){if(typeof queueName!='string') return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName]}}
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:25.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
Effect.Base=function(){};Effect.Base.prototype={position:null,start: function(options){this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this)},loop: function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish) this.finish();this.event('afterFinish');return}
var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos * this.options.fps * this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame}}},render: function(pos){if(this.state=='idle'){this.state='running';this.event('beforeSetup');if(this.setup) this.setup();this.event('afterSetup')}
if(this.state=='running'){if(this.options.transition) pos=this.options.transition(pos);pos *=(this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event('beforeUpdate');if(this.update) this.update(pos);this.event('afterUpdate')}},cancel: function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished'},event: function(eventName){if(this.options[eventName+'Internal']) this.options[eventName+'Internal'](this);if(this.options[eventName]) this.options[eventName](this)},inspect: function(){return '#<Effect:'+$H(this).inspect()+',options:'+$H(this.options).inspect()+'>'}}
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize: function(effects){this.effects=effects||[];this.start(arguments[1])},update: function(position){this.effects.invoke('render',position)},finish: function(position){this.effects.each( function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish) effect.finish(position);effect.event('afterFinish')})}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize: function(){var options=Object.extend({duration:0},arguments[0]||{});this.start(options)},update:Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options)},update: function(position){this.element.setOpacity(position)}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options)},setup: function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop}},update: function(position){this.element.setStyle({left:Math.round(this.options.x * position+this.originalLeft)+'px',top:Math.round(this.options.y * position+this.originalTop)+'px'})}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}))};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize: function(element,percent){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options)},setup: function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each( function(k){this.originalStyle[k]=this.element.style[k]}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each( function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]},update: function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor * position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize * currentScale+this.fontSizeType});this.setDimensions(this.dims[0] * currentScale,this.dims[1] * currentScale)},finish: function(position){if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle)},setDimensions: function(height,width){var d={};if(this.options.scaleX) d.width=Math.round(width)+'px';if(this.options.scaleY) d.height=Math.round(height)+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY) d.top=this.originalTop-topd+'px';if(this.options.scaleX) d.left=this.originalLeft-leftd+'px'} else{if(this.options.scaleY) d.top=-topd+'px';if(this.options.scaleX) d.left=-leftd+'px'}}
this.element.setStyle(d)}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options)},setup: function(){if(this.element.getStyle('display')=='none'){this.cancel();return}
this.oldStyle={backgroundImage:this.element.getStyle('background-image')};this.element.setStyle({backgroundImage:'none'});if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this))},update: function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart())}.bind(this))})},finish: function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize: function(element){this.element=$(element);this.start(arguments[1]||{})},setup: function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset) offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart},update: function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta))}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal: function(effect){if(effect.options.to!=0) return;effect.element.hide().setStyle({opacity:oldOpacity})}},arguments[1]||{});return new Effect.Opacity(element,options)}
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal: function(effect){effect.element.forceRerendering()},beforeSetup: function(effect){effect.element.setOpacity(effect.options.from).show()}},arguments[1]||{});return new Effect.Opacity(element,options)}
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal: function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal: function(effect){effect.effects[0].element.hide().setStyle(oldStyle)}},arguments[1]||{}))}
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal: function(effect){effect.element.hide().undoClipping()}},arguments[1]||{}))}
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup: function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show()},afterFinishInternal: function(effect){effect.element.undoClipping()}},arguments[1]||{}))}
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal: function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup: function(effect){effect.element.makePositioned().makeClipping()},afterFinishInternal: function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity})}})}},arguments[1]||{}))}
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup: function(effect){effect.effects[0].element.makePositioned()},afterFinishInternal: function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle)}},arguments[1]||{}))}
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal: function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal: function(effect){effect.element.undoPositioned().setStyle(oldStyle)}})}})}})}})}})}})}
Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup: function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera) effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show()},afterUpdateInternal: function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'})},afterFinishInternal: function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))}
Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal: function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera) effect.element.setStyle({top:''});effect.element.makeClipping().show()},afterUpdateInternal: function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'})},afterFinishInternal: function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({bottom:oldInnerBottom});effect.element.down().undoPositioned()}},arguments[1]||{}))}
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup: function(effect){effect.element.makeClipping()},afterFinishInternal: function(effect){effect.element.hide().undoClipping()}})}
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case 'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case 'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case 'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case 'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case 'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup: function(effect){effect.element.hide().makeClipping().makePositioned()},afterFinishInternal: function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup: function(effect){effect.effects[0].element.setStyle({height:'0px'}).show()},afterFinishInternal: function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle)}},options))}})}
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case 'top-left':moveX=moveY=0;break;case 'top-right':moveX=dims.width;moveY=0;break;case 'bottom-left':moveX=0;moveY=dims.height;break;case 'bottom-right':moveX=dims.width;moveY=dims.height;break;case 'center':moveX=dims.width/2;moveY=dims.height/2;break}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal: function(effect){effect.effects[0].element.makePositioned().makeClipping()},afterFinishInternal: function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle)}},options))}
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal: function(effect){effect.element.setStyle({opacity:oldOpacity})}},options),{transition:reverser}))}
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal: function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal: function(effect){effect.element.hide().undoClipping().setStyle(oldStyle)}})}},arguments[1]||{}))};['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass'].each(
function(f){Element.Methods[f]=Element[f]});Element.Methods.visualEffect=function(element,effect,options){s=effect.gsub(/_/,'-').camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element)};Element.addMethods();

/* - ++resource++kukit.js - */
if(typeof(kukit)=='undefined'){var kukit={}}
kukit.E='Unknown message (kss optimized for production mode)';try{kukit.HAVE_SAFARI=navigator.vendor&&navigator.vendor.indexOf('Apple')!=-1;kukit.HAVE_IE=eval("_SARISSA_IS_IE")} catch(e){}
kukit.hasFirebug=false;kukit.log=function(str){};kukit.logError=kukit.log;kukit.logDebug=kukit.log;kukit.logFatal=kukit.log;kukit.logWarning=kukit.log;kukit.ut={};kukit.ut.FifoQueue=function(){this.reset()};kukit.ut.FifoQueue.prototype.reset=function(){this.elements=new Array()};kukit.ut.FifoQueue.prototype.push=function(obj){this.elements.push(obj)};kukit.ut.FifoQueue.prototype.pop=function(){return this.elements.shift()};kukit.ut.FifoQueue.prototype.empty=function(){return!this.elements.length};kukit.ut.FifoQueue.prototype.size=function(){return this.elements.length};kukit.ut.FifoQueue.prototype.front=function(){return this.elements[0]};kukit.ut.SortedQueue=function(comparefunc){if(comparefunc){this.comparefunc=comparefunc}
this.reset()};kukit.ut.SortedQueue.prototype.comparefunc=function(a,b){if(a<b){return-1} else if(a>b){return+1} else{return 0}};kukit.ut.SortedQueue.prototype.reset=function(){this.elements=new Array()};kukit.ut.SortedQueue.prototype.push=function(obj){var i=0;var length=this.elements.length;while(i<length&&this.comparefunc(this.elements[i],obj)==-1){i++}
this.elements.splice(i,0,obj)};kukit.ut.SortedQueue.prototype.pop=function(){return this.elements.shift()};kukit.ut.SortedQueue.prototype.popn=function(n){return this.elements.splice(0,n)};kukit.ut.SortedQueue.prototype.empty=function(){return!this.elements.length};kukit.ut.SortedQueue.prototype.size=function(){return this.elements.length};kukit.ut.SortedQueue.prototype.get=function(n){return this.elements[n]};kukit.ut.SortedQueue.prototype.front=function(){return this.elements[0]};kukit.ut.evalBool=function(value,errname){if(value=='true'||value=='True'||value=='1'){value=true} else if(value=='false'||value=='False'||value=='0'||value==''){value=false}
return value};kukit.ut.evalInt=function(value,errname){value=parseInt(value);return value};kukit.ut.evalList=function(value,errname){value=value.replace(/^ +/,'');value=value.replace(/ +$/,'');value=value.split(/ *, */);return value};kukit.ut.TimerCounter=function(delay,func,restart){this.delay=delay;this.func=func;if(typeof(restart)=='undefined'){restart=false}
this.restart=restart;this.timer=null};kukit.ut.TimerCounter.prototype.start=function(){if(this.timer){throw kukit.E}
var self=this;var func=function(){self.timeout()};this.timer=setTimeout(func,this.delay)};kukit.ut.TimerCounter.prototype.timeout=function(){this.func();if(this.restart){this.timer=null;this.start()}};kukit.ut.TimerCounter.prototype.clear=function(){if(this.timer){window.clearTimeout(this.timer);this.timer=null}
this.restart=false};kukit.ut.Scheduler=function(func){this.func=func;this.timer=null;this.nextWake=null};kukit.ut.Scheduler.prototype.setNextWake=function(ts){if(this.nextWake){this.clear()}
if(!ts){return}
var now=(new Date()).valueOf();if(ts>now){this.nextWake=ts;var self=this;var func=function(){self.timeout()};this.timer=setTimeout(func,ts-now)} else{this.func()}};kukit.ut.Scheduler.prototype.setNextWakeAtLeast=function(ts){if(!ts||!this.nextWake||ts<this.nextWake){this.setNextWake(ts)} else{var now=(new Date()).valueOf()}};kukit.ut.Scheduler.prototype.timeout=function(){this.timer=null;this.nextWake=null;this.func()};kukit.ut.Scheduler.prototype.clear=function(){if(this.nextWake){window.clearTimeout(this.timer);this.timer=null;this.nextWake=null}};kukit.ut.SerializeScheduler=function(){this.items=[];this.lock=false};kukit.ut.SerializeScheduler.prototype.addPre=function(func,remark){this.items.push({func:func,remark:remark});this.execute()};kukit.ut.SerializeScheduler.prototype.addPost=function(func,remark){this.items.unshift({func:func,remark:remark});this.execute()};kukit.ut.SerializeScheduler.prototype.execute=function(){if(!this.lock){this.lock=true;while(true){var item=this.items.pop();if(!item){break}
try{item.func()} catch(e){this.lock=false;throw e}}
this.lock=false}};kukit.ut.registerEventListener=function(elem,event,func){if(elem.addEventListener){elem.addEventListener(event,func,false);return true} else if(elem.attachEvent){var result=elem.attachEvent("on"+event,func);return result}
return false};kukit.ut.DictCollector=function(){this.result={}};kukit.ut.DictCollector.prototype.add=function(key,value){this.result[key]=value};kukit.ut.TupleCollector=function(){this.result=[]};kukit.ut.TupleCollector.prototype.add=function(key,value){this.result.push([key,value])};kukit.err={};kukit.err.exceptionFactory=function(name){var exc=function(arg1,arg2,arg3,arg4,arg5){var kw=this.__init__(name,arg1,arg2,arg3,arg4,arg5);var err=new Error(kw.message);for(var key in kw){err[key]=kw[key]}
if(typeof err.number=='number'){err.toString=function(){return this.name+': '+this.message}}
return err};exc.prototype.__init__=function(name,message){var kw={};kw.name=name;kw.message=message;return kw};return exc};kukit.err.rd={};kukit.err.tk={};kukit.op={};kukit.op.Oper=function(dict){this.node=null;this.parms={};this.eventRule=null;this.binderInstance=null;this.orignode=null;this.action=null;this.browserevent=null;this.unrestrictedUpdate(dict)};kukit.op.Oper.prototype.clone=function(dict,restricted){var newoper=new kukit.op.Oper(this);newoper.unrestrictedUpdate(dict,restricted);return newoper};kukit.op.Oper.prototype.update=function(dict){this.unrestrictedUpdate(dict,true)};kukit.op.Oper.prototype.unrestrictedUpdate=function(dict,restricted){if(typeof(dict)=='undefined'){return}
for(var key in dict){var value=dict[key];if(typeof(value)!='function'){this[key]=value}}};kukit.op.Oper.prototype.logDebug=function(){};kukit.op.Oper.prototype.executeClientAction=function(name){var nodes=null;for(key in this.kssParms){switch(key){case 'kssSelector':{nodes=this.kssParms[key]} break;default:{throw kukit.E} break}}
var executeActions=kukit.actionsGlobalRegistry.get(name);if(nodes!=null){for(var i=0;i<nodes.length;i++){this.node=nodes[i];executeActions(this)}} else{executeActions(this)}};kukit.op.Oper.prototype.executeDefaultAction=function(name,optional){var namespace=this.binderInstance.__eventNamespace__;var kssevent=kukit.eventsGlobalRegistry.get(namespace,name);var methodName=kssevent.defaultActionMethodName;var success=false;if(!methodName){} else{if(typeof(this.defaultParameters)!='undefined'){this.parms=this.defaultParameters} else{this.parms={}}
this.binderInstance._EventBinder_callMethod(namespace,name,this,methodName);success=true}
return success};kukit.op.Oper.prototype.executeServerAction=function(name){var sa=new kukit.sa.ServerAction(name,this)};kukit.op.Oper.prototype.getEventName=function(){return this.eventRule.kssSelector.name};kukit.op.Oper.prototype.getEventNamespace=function(){return this.eventRule.kssSelector.namespace};kukit.op.Oper.prototype.hasExecuteActions=function(){if(this.eventRule){if(this.eventRule.actions.hasActions())
return true
var kssevent=kukit.eventsGlobalRegistry.get(this.getEventNamespace(),this.getEventName())
var methodName=kssevent.defaultActionMethodName;return(typeof methodName!='undefined')} else
return false};kukit.op.Oper.prototype.makeExecuteActionsHook=function(filter){if(!this.hasExecuteActions()){return function(){}}
var eventName=this.getEventName();var self=this;var func_to_bind=function(dict){var newoper=self.clone(dict,true);if(filter&&!filter(newoper)) return false;newoper.binderInstance._EventBinder_triggerEvent(eventName,newoper);return true};return func_to_bind};kukit.op.Oper.prototype.evaluateParameters=function(mandatory,defaults,errname,allow_excess){var newParameters={};for(var i=0;i<mandatory.length;i++){var next=mandatory[i];newParameters[next]=this.parms[next]}
for(var key in defaults){var val=this.parms[key];if(typeof(val)=='undefined'){newParameters[key]=defaults[key]} else{newParameters[key]=val}}
for(var key in this.parms){if(typeof(newParameters[key])=='undefined'){newParameters[key]=this.parms[key]}}
this.parms=newParameters};kukit.op.Oper.prototype.completeParms=function(mandatory,defaults,errname,allow_excess){this.evaluateParameters(mandatory,defaults,errname,allow_excess)};kukit.op.Oper.prototype.evalBool=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalBool(value,kukit.E)};kukit.op.Oper.prototype.evalInt=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalInt(value,kukit.E)};kukit.op.Oper.prototype.evalList=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalList(value,kukit.E)};kukit.Engine=function(){this.baseUrl=this.calculateBase();this.documentRules=new kukit.rd.MethodTable();this._ruleProcessorClasses={};this._ruleProcessorClasses['kss']=kukit.kssp.KssRuleProcessor;this._ruleProcessors=new Array();this.bindScheduler=new kukit.ut.SerializeScheduler();this.stateVariables={};this.requestManager=new kukit.rm.RequestManager();this.binderInfoRegistry=new kukit.er.BinderInfoRegistry();this.loadScheduler=new kukit.rd.LoadActions();this.initializedOnDOMLoad=false;this.setupEventsQueue=[];this.setupEventsInProgress=false};kukit.Engine.prototype.calculateBase=function(){var base='';try{var _dummy=document;_dummy=window} catch(e){return base}
var nodes=document.getElementsByTagName("link");if(nodes.length>0){for(var i=0;i<nodes.length;i++){var link=nodes[i];if(link.rel=='kss-base-url'){return link.href}}}
nodes=document.getElementsByTagName("base");if(nodes.length==0){var base=window.location.href;var pieces=base.split('/');pieces.pop();base=pieces.join('/')} else{base=nodes[0].href;var baselen=base.length;if(baselen>0&&base.substring(baselen-1)=='/'){base=base.substring(0,baselen-1)}}
return base};kukit.Engine.prototype.getRuleSheetLinks=function(){var nodes=document.getElementsByTagName("link");var results=[];for(var i=0;i<nodes.length;i++){if(kukit.isKineticStylesheet(nodes[i])){var res_type=null;if((nodes[i].type=='text/css')||(nodes[i].type=='text/kss')){res_type='kss'}
var newRuleLink=new kukit.RuleSheetLink(nodes[i].href,res_type);results[results.length]=newRuleLink}}
return results};kukit.Engine.prototype.createRuleProcessor=function(rulelink){var ruleProcessorClass=this._ruleProcessorClasses[rulelink.res_type];if(ruleProcessorClass){var ruleprocessor=new ruleProcessorClass(rulelink.href);this._ruleProcessors[this._ruleProcessors.length]=ruleprocessor;return ruleprocessor}
return null};kukit.Engine.prototype.getRules=function(){var rules=new Array();var ruleProcessors=this._ruleProcessors
for(var j=0;j<ruleProcessors.length;j++){var ruleProcessor=ruleProcessors[j];for(var i=0;i<ruleProcessor.rules.length;i++){rules.push(ruleProcessor.rules[i])}}
return rules}
kukit.Engine.prototype.getRuleProcessors=function(){return this._ruleProcessors}
kukit.isKineticStylesheet=function(node){var rel=node.rel;if(rel=="kinetic-stylesheet"){return true}
if(rel=="kukit"||rel=="k-stylesheet"){return true}
return false};kukit.Engine.prototype.setupEvents=function(inNodes){if(this.setupEventsInProgress){this.setupEventsQueue=this.setupEventsQueue.concat(inNodes)} else{this.doSetupEvents(inNodes)}};kukit.Engine.prototype.beginSetupEventsCollection=function(){this.setupEventsInProgress=true};kukit.Engine.prototype.finishSetupEventsCollection=function(){this.setupEventsInProgress=false;var setupEventsQueue=this.setupEventsQueue;this.setupEventsQueue=[];this.doSetupEvents(setupEventsQueue)};kukit.Engine.prototype.doSetupEvents=function(inNodes){var self=this;var deferredEventsSetup=function(){self._setupEvents(inNodes)};var found=false;if(!inNodes){found=true} else{for(var i=0;i<inNodes.length;i++){var node=inNodes[i];if(node.nodeType==1){if(!found){found=true}}}}
if(found){var remark='';this.bindScheduler.addPre(deferredEventsSetup,remark)}};kukit.Engine.prototype._setupEvents=function(inNodes){var phase;if(typeof(inNodes)=='undefined'){phase=1} else{phase=2}
this.binderInfoRegistry.startBindingPhase();var rules=this.getRules();var ruletable=new kukit.rd.RuleTable(this.loadScheduler);for(var y=0;y<rules.length;y++){rules[y].mergeForSelectedNodes(ruletable,phase,inNodes)}
if(phase==1){this.documentRules.bindall(phase)}
ruletable.bindall(phase);this.binderInfoRegistry.processBindingEvents()};kukit.Engine.prototype.initializeRules=function(){if(window.kukitRulesInitializing||window.kukitRulesInitialized){return}
kukit.engine=this;window.kukitRulesInitializing=true;var rulelinks=this.getRuleSheetLinks();for(var i=0;i<rulelinks.length;i++){var rulelink=rulelinks[i];var ruleprocessor=this.createRuleProcessor(rulelink);if(ruleprocessor){ruleprocessor.load();ruleprocessor.parse()}}
this.setupEvents();window.kukitRulesInitializing=false;window.kukitRulesInitialized=true};kukit.initializeRules=function(){kukit.bootstrap()};kukit.RuleSheetLink=function(href,res_type){this.href=href;this.res_type=res_type};kukit.bootstrap=function(){var engine=new kukit.Engine();engine.initializeRules()};kukit.bootstrapFromDOMLoad=function(){var engine=new kukit.Engine();engine.initializedOnDOMLoad=true;engine.initializeRules()};if(typeof(window)!='undefined'){kukit.ut.registerEventListener(window,"load",kukit.bootstrap)}
kukit.tk={};kukit.tk._TokenBase=function(){};kukit.tk._TokenBase.prototype.emitError=function(msg){throw kukit.E};kukit.tk._TokenBase.prototype.setSrcStatus=function(eofOk){if(!this.finished&&this.src.text.length==this.src.pos){if(eofOk){this.finished=true} else{this.emitError(kukit.E)}}};kukit.tk._ParserBase=function(){};kukit.tk._ParserBase.prototype=new kukit.tk._TokenBase;kukit.tk._ParserBase.prototype.emitAndReturn=function(token){this.finished=true;return token};kukit.tk._ParserBase.prototype.nextStep=function(table){var src=this.src;var best_pos=src.text.length;var best_symbol=null;for(var symbol in table){var pos=src.text.indexOf(symbol,src.pos);if(pos!=-1&&pos<best_pos){best_pos=pos;best_symbol=symbol}}
if(best_pos>src.pos){this.result.push(new kukit.tk.Fraction(src,best_pos));src.pos=best_pos}
if(best_symbol){var tokens=eval(table[best_symbol]);if(typeof(tokens)!='undefined'){if(typeof(tokens.length)=='undefined'){tokens=[tokens]}
for(var i=0;i<tokens.length;i++){this.result.push(tokens[i])}}}};kukit.tk._ParserBase.prototype.process=function(){this.txt='';for(var i=0;i<this.result.length;i++){this.txt+=this.result[i].txt}};kukit.tk._ParserBase.prototype.expectToken=function(cursor,token){var i=cursor.next;if(token){var symbol=token.prototype.symbol;if(i>=this.result.length){this.emitError(kukit.E)} else if(this.result[i].symbol!=symbol){this.emitError(kukit.E)}} else{if(i>=this.result.length){this.emitError(kukit.E)}}
cursor.token=this.result[i];cursor.next+=1};kukit.tk._ParserBase.prototype.ifToken=function(cursor,token1,token2,token3,token4){var i=cursor.next;return(!(i>=this.result.length||this.result[i].symbol!=token1.prototype.symbol&&(!token2||this.result[i].symbol!=token2.prototype.symbol&&(!token3||this.result[i].symbol!=token3.prototype.symbol&&(!token4||this.result[i].symbol!=token4.prototype.symbol)))))};kukit.tk._ParserBase.prototype.digestTxt=function(cursor,token1,token2,token3,token4){this.digestExactTxt(cursor,token1,token2,token3,token4);cursor.txt=this.dewhitespaceAndTrim(cursor.txt)};kukit.tk._ParserBase.prototype.digestExactTxt=function(cursor,token1,token2,token3,token4){var result='';while(this.ifToken(cursor,token1,token2,token3,token4)){result+=this.result[cursor.next].txt;cursor.next++}
cursor.txt=result};kukit.tk._ParserBase.prototype.dewhitespace=function(txt){if(txt!=' '){txt=txt.replace(/[\r\n\t ]+/g,' ')}
return txt};kukit.tk._ParserBase.prototype.dewhitespaceAndTrim=function(txt){txt=this.dewhitespace(txt);if(txt&&txt.charAt(0)==' '){txt=txt.substr(1)}
txt=txt.replace(/ $/,'');return txt};kukit.tk.Fraction=function(src,endpos){this.txt=src.text.substring(src.pos,endpos);this.startpos=src.pos;this.endpos=src.pos;this.finished=true};kukit.tk.Fraction.prototype.symbol='fraction';kukit.tk.mkToken=function(symbol,txt){f=function(src){this.src=src;this.startpos=src.pos;if(src.text.substr(src.pos,txt.length)!=txt){this.emitError(kukit.E)} else{src.pos+=txt.length;this.finished=true}
this.endpos=src.pos};f.prototype=new kukit.tk._TokenBase;f.prototype.symbol=symbol;f.prototype.txt=txt;return f};kukit.tk.mkParser=function(symbol,table){f=function(src,tokenClass,eofOk){this.src=src;this.startpos=src.pos;this.finished=false;this.result=[];if(tokenClass){this.result.push(new tokenClass(this.src))}
this.setSrcStatus(eofOk);while(!this.finished){this.nextStep(table);this.setSrcStatus(eofOk)}
this.endpos=src.pos;this.process()};f.prototype=new kukit.tk._ParserBase;f.prototype.symbol=symbol;return f};kukit.tk.Cursor=function(txt){this.text=txt;this.pos=0};kukit.tk.Cursor.prototype.makeMarker=function(pos){var cursor=new kukit.tk.Cursor();cursor.text=this.text;cursor.pos=pos;cursor.calcRowCol();return cursor};kukit.tk.Cursor.prototype.getRowCol=function(pos){if(typeof(pos)=='undefined'){pos=this.pos}
var index=0;var row=1;var next=0;while(true){next=this.text.indexOf('\n',index);if(next==-1||next>=pos){break}
index=next+1;row+=1}
var col=pos-index+1;return{'row':row,'col':col}};kukit.tk.Cursor.prototype.calcRowCol=function(pos){var rowcol=this.getRowCol();this.row=rowcol.row;this.col=rowcol.col};kukit.pr={};kukit.pr.ValueProviderRegistry=function(){this.content={}};kukit.pr.ValueProviderRegistry.prototype.register=function(name,func){if(typeof(func)=='undefined'){throw kukit.E}
this.content[name]=func};kukit.pr.ValueProviderRegistry.prototype.exists=function(name){var entry=this.content[name];return(typeof(entry)!='undefined')};kukit.pr.ValueProviderRegistry.prototype.get=function(name){var func=this.content[name];if(!func){if(name==''){return kukit.pr.IdentityPP} else{throw kukit.E}}
return func};kukit.pprovidersGlobalRegistry=new kukit.pr.ValueProviderRegistry();kukit.pr.IdentityPP=function(){};kukit.pr.IdentityPP.prototype={check: function(args){},eval: function(args,node){return args[0]}};kukit.pprovidersGlobalRegistry.register('',kukit.pr.IdentityPP);kukit.pr.FormVarPP=function(){};kukit.pr.FormVarPP.prototype={check: function(args){},eval: function(args,node){return kukit.fo.getFormVar(new kukit.fo.NamedFormLocator(args[0]),args[1])}};kukit.pprovidersGlobalRegistry.register('formVar',kukit.pr.FormVarPP);kukit.pr.CurrentFormVarPP=function(){};kukit.pr.CurrentFormVarPP.prototype={check: function(args){},eval: function(args,node){if(args.length==1){return kukit.fo.getFormVar(new kukit.fo.CurrentFormLocator(node),args[0])} else{return kukit.fo.getValueOfFormElement(node)}}};kukit.pprovidersGlobalRegistry.register('currentFormVar',kukit.pr.CurrentFormVarPP);kukit.pr.CurrentFormVarFromKssAttrPP=function(){};kukit.pr.CurrentFormVarFromKssAttrPP.prototype={check: function(args){},eval: function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){kukit.ut.evalBool(args[1],kukit.E);recurseParents=args[1]}
var formvarname=kukit.dom.getRecursiveAttribute(node,argname,recurseParents,kukit.dom.getKssAttribute);return kukit.fo.getFormVar(new kukit.fo.CurrentFormLocator(node),formvarname)}};kukit.pprovidersGlobalRegistry.register('currentFormVarFromKssAttr',kukit.pr.CurrentFormVarFromKssAttrPP);kukit.pr.FormPP=function(){};kukit.pr.FormPP.prototype={check: function(args){},eval: function(args,node){return kukit.fo.getAllFormVars(new kukit.fo.NamedFormLocator(args[0]),new kukit.ut.DictCollector())}};kukit.pprovidersGlobalRegistry.register('form',kukit.pr.FormPP);kukit.pr.CurrentFormPP=function(){};kukit.pr.CurrentFormPP.prototype={check: function(args){},eval: function(args,node){return kukit.fo.getAllFormVars(new kukit.fo.CurrentFormLocator(node),new kukit.ut.DictCollector())}};kukit.pprovidersGlobalRegistry.register('currentForm',kukit.pr.CurrentFormPP);kukit.pr.NodeAttrPP=function(){};kukit.pr.NodeAttrPP.prototype={check: function(args){},eval: function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){recurseParents=args[1];kukit.ut.evalBool(recurseParents,kukit.E)}
return kukit.dom.getRecursiveAttribute(node,argname,recurseParents,kukit.dom.getAttribute)}};kukit.pprovidersGlobalRegistry.register('nodeAttr',kukit.pr.NodeAttrPP);kukit.pr.KssAttrPP=function(){};kukit.pr.KssAttrPP.prototype={check: function(args){},eval: function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){recurseParents=args[1];kukit.ut.evalBool(recurseParents,kukit.E)}
return kukit.dom.getRecursiveAttribute(node,argname,recurseParents,kukit.dom.getKssAttribute)}};kukit.pprovidersGlobalRegistry.register('kssAttr',kukit.pr.KssAttrPP);kukit.pr.NodeContentPP=function(){};kukit.pr.NodeContentPP.prototype={check: function(args){},eval: function(args,node){var recursive=false;if(args.length==1){recursive=args[0]}
return kukit.dom.textContent(node,recursive)}};kukit.pprovidersGlobalRegistry.register('nodeContent',kukit.pr.NodeContentPP);kukit.pr.StateVarPP=function(){};kukit.pr.StateVarPP.prototype={check: function(args){},eval: function(args,node){var key=args[0];var value=kukit.engine.stateVariables[key];if(typeof(value)=='undefined'){throw kukit.E}
return value}};kukit.pprovidersGlobalRegistry.register('stateVar',kukit.pr.StateVarPP);kukit.pr.PassPP=function(){};kukit.pr.PassPP.prototype={check: function(args){},eval: function(args,node,defaultParameters){var key=args[0];var value=defaultParameters[key];if(typeof(value)=='undefined'){throw kukit.E}
return value}};kukit.pprovidersGlobalRegistry.register('pass',kukit.pr.PassPP);kukit.rd={};kukit.rd.makeId=function(namespace,name){if(namespace==null){namespace=''}
return '@'+namespace+'@'+name};kukit.rd.makeMergeId=function(id,namespace,name){if(namespace==null){namespace=''}
return id+'@'+namespace+'@'+name};kukit.rd.KssSelector=function(isEvent,css,name,namespace,id){this.isEventSelector=isEvent;this.isMethodSelector=!isEvent;if(!name){throw 'KssSelector must have name'}
this.css=css;this.name=name;this.namespace=namespace;this.className=null;this.id=id};kukit.rd.KssSelector.prototype.setIdAndClass=function(){this.className=kukit.eventsGlobalRegistry.get(this.namespace,this.name).className;if(this.id==null){this.id=kukit.rd.makeId(this.namespace,this.className)}
this.mergeId=kukit.rd.makeMergeId(this.id,this.namespace,this.name)};kukit.rd.KssTextValue=function(txt){this.txt=txt};kukit.rd.KssTextValue.prototype.isMethod=false;kukit.rd.KssTextValue.prototype.check=function(registry){this.pprovider=new(registry.get(''))()};kukit.rd.KssTextValue.prototype.evaluate=function(parms,key,node,defaultParameters){parms[key]=this.pprovider.eval([this.txt],node,defaultParameters)};kukit.rd.KssMethodValue=function(methodName,args){this.methodName=methodName;this.args=args};kukit.rd.KssMethodValue.prototype.isMethod=true;kukit.rd.KssMethodValue.prototype.check=function(registry){var f=registry.get(this.methodName);this.pprovider=new f()};kukit.rd.KssMethodValue.prototype.evaluate=function(parms,key,node,defaultParameters){parms[key]=this.pprovider.eval(this.args,node,defaultParameters)};kukit.rd.KssPseudoValue=function(methodName,args){this.methodName=methodName;this.args=args};kukit.rd.KssPseudoValue.prototype.isMethod=true;kukit.rd.KssPseudoValue.prototype.check=function(){};kukit.rd.EventRuleNr=0;kukit.rd.EventRule=function(kssSelector,parms,actions){if(typeof(parms)=='undefined'){this.kssSelector=kssSelector} else{this.index=kukit.rd.EventRuleNr;this.mergedIndex=null;kukit.rd.EventRuleNr=this.index+1;this.kssSelector=kssSelector;this.parms=parms;this.actions=actions}};kukit.rd.EventRule.prototype.getIndex=function(){if(this.mergedIndex){return this.mergedIndex} else{return this.index}};kukit.rd.EventRule.prototype.mergeForSelectedNodes=function(ruletable,phase,inNodes){if(this.kssSelector.isEventSelector){var nodes=kukit.dom.cssQuery(this.kssSelector.css,inNodes);var counter=0;for(var y=0;y<nodes.length;y++){var node=nodes[y];if(typeof(node._kukitmark)=='undefined'){ruletable.add(node,this);counter+=1}}} else if(typeof(inNodes)=='undefined'){kukit.engine.documentRules.add(this)}};kukit.rd.EventRule.prototype.getBinderInfo=function(){return kukit.engine.binderInfoRegistry.getOrCreateBinderInfo(this.kssSelector.id,this.kssSelector.className,this.kssSelector.namespace)};kukit.rd.EventRule.prototype.bind=function(node){var oper=new kukit.op.Oper();var binderInfo=this.getBinderInfo();oper.node=node;oper.eventRule=this;oper.binderInstance=binderInfo.binderInstance;oper.parms=this.parms;binderInfo.bindOper(oper)};kukit.rd.EventRule.prototype.store=function(node){};kukit.rd.EventRule.prototype.isMerged=function(){return(this.mergedIndex!=null)};kukit.rd.EventRule.prototype.cloneForMerge=function(){var merged=new kukit.rd.EventRule(this.kssSelector);merged.actions=new kukit.rd.ActionSet();merged.parms={};merged.mergedIndex='X';merged.merge(this);merged.mergedIndex=this.getIndex();return merged};kukit.rd.EventRule.prototype.merge=function(other){this.mergedIndex=this.mergedIndex+','+other.getIndex();for(var key in other.parms){this.parms[key]=other.parms[key]}
this.actions.merge(other.actions)};kukit.rd.EventRule.prototype.mergeIntoDict=function(dict,key,eventRule){var mergedRule=dict[key];if(typeof(mergedRule)=='undefined'){dict[key]=eventRule} else{if(!mergedRule.isMerged()){mergedRule=mergedRule.cloneForMerge();dict[key]=mergedRule}
mergedRule.merge(eventRule)}};kukit.rd.ActionSet=function(){this.content={}};kukit.rd.ActionSet.prototype.hasActions=function(){for(var name in this.content){return true}
return false};kukit.rd.ActionSet.prototype.merge=function(other){for(var key in other.content){var action=this.content[key];var action2=other.content[key];if(typeof(action)=='undefined'){if(action2.type!='X'){action=new kukit.rd.Action();this.content[key]=action} else{throw kukit.E}}
if(action2.type!='X'){action.merge(action2)} else{this.deleteAction(key)}}};kukit.rd.ActionSet.prototype.execute=function(oper){for(var key in this.content){var action=this.content[key];if(action.type!='E'){action.execute(oper)}}
if(typeof(this.content['default'])=='undefined'){var name=oper.eventRule.kssSelector.name;oper=oper.clone({'parms':{}});oper.executeDefaultAction(name,true)}};kukit.rd.ActionSet.prototype.getOrCreateAction=function(name){var action=this.content[name];if(typeof(action)=='undefined'){action=new kukit.rd.Action();action.setName(name);this.content[name]=action}
return action};kukit.rd.ActionSet.prototype.getActionOrNull=function(name){var action=this.content[name];if(typeof(action)=='undefined'){action=null}
return action};kukit.rd.ActionSet.prototype.deleteAction=function(name){var action=this.content[name];delete this.content[name]};kukit.rd.ActionSet.prototype.getDefaultAction=function(){return this.getActionOrNull('default')};kukit.rd.ActionSet.prototype.getErrorActionFor=function(action){return this.getActionOrNull(action.error)};kukit.rd.Action=function(){this.name=null;this.error=null;this.parms={};this.type=null};kukit.rd.Action.prototype.setName=function(name){this.name=name;if(name=='default'){this.setType('D')}};kukit.rd.Action.prototype.setType=function(type){this.type=type};kukit.rd.Action.prototype.setError=function(error){this.error=error};kukit.rd.Action.prototype.merge=function(other){if(other.name!=null){this.setName(other.name)}
if(other.type!=null){this.setType(other.type)}
if(other.error!=null){this.setError(other.error)}
for(var key in other.parms){this.parms[key]=other.parms[key]}};kukit.rd.Action.prototype.makeActionOper=function(oper){var parms={};var kssParms={};if(typeof(oper.defaultParameters)=='undefined'){oper.defaultParameters={}}
for(var key in this.parms){var kssvalue=this.parms[key];if(key.match(/^kss/)){kssvalue.evaluate(kssParms,key,oper.node,oper.defaultParameters)} else{kssvalue.evaluate(parms,key,oper.node,oper.defaultParameters)}}
var anOper=oper.clone({'parms':parms,'kssParms':kssParms,'action':this});return anOper};kukit.rd.Action.prototype.execute=function(oper){oper=this.makeActionOper(oper);switch(this.type){case 'D':{var name=oper.eventRule.kssSelector.name;oper.executeDefaultAction(name)} break;case 'S':{oper.executeServerAction(this.name)} break;case 'C':{oper.executeClientAction(this.name)} break;case 'E':{oper.executeClientAction(this.name)} break}};kukit.rd.LoadActions=function(){this.items=[]};kukit.rd.LoadActions.prototype.empty=function(){return(this.size()==0)};kukit.rd.LoadActions.prototype.size=function(){return this.items.length};kukit.rd.LoadActions.prototype.push=function(f){if(this.items.length>=100){throw('Infinite recursion, stack full')}
this.items.push(f)};kukit.rd.LoadActions.prototype.execute=function(){var f=this.items.shift();if(f){f();return true} else{return false}};kukit.rd.LoadActions.prototype.executeAll=function(){var i=0;while(true){var success=this.execute();if(!success){break}
i++}
return i};kukit.rd.RuleTable=function(loadScheduler){this.loadScheduler=loadScheduler;this.nodes={}};kukit.rd.RuleTable.prototype.add=function(node,eventRule){var nodehash=kukit.rd.hashNode(node);var nodeval=this.nodes[nodehash];if(typeof(nodeval)=='undefined'){nodeval={'node':node,'val':{}};this.nodes[nodehash]=nodeval}
eventRule.mergeIntoDict(nodeval.val,eventRule.kssSelector.mergeId,eventRule)};kukit.rd.RuleTable.prototype.bindall=function(phase){var counter=0;for(var nodehash in this.nodes){var nodeval=this.nodes[nodehash];nodeval.node._kukitmark=phase;for(var id in nodeval.val){var eventRule=nodeval.val[id];eventRule.bind(nodeval.node)}
counter+=1}
var loadactions=this.loadScheduler;if(!loadactions.empty()){var count=loadactions.executeAll()}};kukit.rd.uid=0;kukit.rd.hashNode=function(node){if(node==null){return '<<DOCUMENT>>'}
var id=node.uniqueID;if(typeof(id)=='undefined'){id=kukit.rd.uid;node.uniqueID=id;kukit.rd.uid++}
return id};kukit.rd.MethodTable=function(){this.content={};this.content['document']={};this.content['behaviour']={}};kukit.rd.MethodTable.prototype.add=function(eventRule){var category=eventRule.kssSelector.css;var dict=this.content[category];eventRule.mergeIntoDict(dict,eventRule.kssSelector.mergeId,eventRule)};kukit.rd.MethodTable.prototype.getMergedRule=function(category,name,binderInstance){var dict=this.content[category];var namespace=binderInstance.__eventNamespace__;var id=binderInstance.__binderId__;var mergeId=kukit.rd.makeMergeId(id,namespace,name);var mergedRule=dict[mergeId];if(typeof(mergedRule)=='undefined'){mergedRule=null}
return mergedRule};kukit.rd.MethodTable.prototype.bindall=function(){var documentRules=this.content['document'];var counter=0;for(var mergeId in documentRules){documentRules[mergeId].bind(null);counter+=1}};kukit.kssp={};kukit.kssp.commentbegin=kukit.tk.mkToken('commentbegin',"\/\*");kukit.kssp.commentend=kukit.tk.mkToken('commentend',"\*\/");kukit.kssp.openbrace=kukit.tk.mkToken('openbrace',"{");kukit.kssp.closebrace=kukit.tk.mkToken('closebrace',"}");kukit.kssp.openbracket=kukit.tk.mkToken('openbracket',"[");kukit.kssp.closebracket=kukit.tk.mkToken('closebracket',"]");kukit.kssp.openparent=kukit.tk.mkToken('openparent',"(");kukit.kssp.closeparent=kukit.tk.mkToken('closeparent',")");kukit.kssp.semicolon=kukit.tk.mkToken('semicolon',";");kukit.kssp.colon=kukit.tk.mkToken('colon',":");kukit.kssp.quote=kukit.tk.mkToken('quote',"'");kukit.kssp.dquote=kukit.tk.mkToken('dquote','"');kukit.kssp.backslash=kukit.tk.mkToken('backslash','\x5c');kukit.kssp.comma=kukit.tk.mkToken('comma',",");kukit.kssp.equals=kukit.tk.mkToken('equals',"=");kukit.kssp.Document=kukit.tk.mkParser('document',{"\/\*":'new kukit.kssp.Comment(this.src, kukit.kssp.commentbegin)',"{":'new kukit.kssp.Block(this.src, kukit.kssp.openbrace)'});kukit.kssp.Document.prototype.process=function(){this.eventRules=[];var cursor={'next':0};while(cursor.next<this.result.length){this.digestTxt(cursor,kukit.tk.Fraction,kukit.kssp.Comment);var key=cursor.txt;if(!key){break}
this.expectToken(cursor,kukit.kssp.Block);this.addBlock(key,cursor.token)}
this.result=[];this.txt=''};kukit.kssp.Document.prototype.addBlock=function(key,block){var src=new kukit.tk.Cursor(key+' ');var parser=new kukit.kssp.KssSelector(src,null,true);if(block.evt_name!=null){if(block.evt_name!=parser.kssSelector.name||block.evt_namespace!=parser.kssSelector.namespace){block.emitError(kukit.E)}}
var eventRule=new kukit.rd.EventRule(parser.kssSelector,block.eventParameters,block.actions);this.eventRules.push(eventRule)};kukit.kssp.Comment=kukit.tk.mkParser('comment',{"\*\/":'this.emitAndReturn(new kukit.kssp.commentend(this.src))'});kukit.kssp.Comment.prototype.process=function(){this.result=[];this.txt=' '};kukit.kssp.Block=kukit.tk.mkParser('block',{";":'new kukit.kssp.semicolon(this.src)',":":'[new kukit.kssp.colon(this.src), new kukit.kssp.PropValue(this.src)]',"}":'this.emitAndReturn(new kukit.kssp.closebrace(this.src))'});kukit.kssp.Block.prototype.process=function(){this.eventParameters={};this.evt_name=null;this.evt_namespace=null;this.actions=new kukit.rd.ActionSet();var cursor={'next':1};while(cursor.next<this.result.length-1){this.digestTxt(cursor,kukit.tk.Fraction,kukit.kssp.Comment);var key=cursor.txt;if(!key){break}
this.expectToken(cursor,kukit.kssp.colon);this.expectToken(cursor,kukit.kssp.PropValue);this.addDeclaration(key,cursor.token.value);if(cursor.next==this.result.length-1) break;this.expectToken(cursor,kukit.kssp.semicolon)}
this.result=[];this.txt=''};kukit.kssp.Block.prototype.addDeclaration=function(key,value){var ppRegistries={'':kukit.pprovidersGlobalRegistry,'kssSelector':kukit.sr.pproviderSelRegistry,'kssSubmitForm':kukit.fo.pproviderFormRegistry};var splitkey=key.split('-');var name=splitkey[0];if(name=='evt'){var enamespace;var ename;var ekey;if(splitkey.length==3){ename=splitkey[1];ekey=splitkey[2]} else{enamespace=splitkey[1];ename=splitkey[2];ekey=splitkey[3]}
if(this.evt_name==null){this.evt_name=ename;this.evt_namespace=enamespace}
this.eventParameters[ekey]=value.txt} else if(name=='action'){var atab={'server':'S','client':'C','cancel':'X'};var actionType=atab[splitkey[1]];var action=this.actions.getOrCreateAction(value.txt);if(actionType!='X'||action.type==null){action.setType(actionType)} else{this.actions.deleteAction(value.txt)}} else{var aname;var akey;if(splitkey.length==2){aname=splitkey[0];akey=splitkey[1]} else{aname=splitkey[0]+'-'+splitkey[1];akey=splitkey[2]}
var action=this.actions.getOrCreateAction(aname);switch(akey){case 'error':{action.setError(value.txt);var err_action=this.actions.getOrCreateAction(value.txt);err_action.setType('E')} break;default:{action.parms[akey]=value;var registry=ppRegistries[akey];if(typeof(registry)=='undefined'){registry=ppRegistries['']}
try{value.check(registry)} catch(e){this.emitError(kukit.E)}} break}}};kukit.kssp.PropValue=kukit.tk.mkParser('propvalue',{";":'this.emitAndReturn()',"}":'this.emitAndReturn()',")":'this.emitAndReturn()',",":'this.emitAndReturn()',"'": 'new kukit.kssp.String(this.src,kukit.kssp.quote)','"':'new kukit.kssp.String2(this.src, kukit.kssp.dquote)',"\/\*":'new kukit.kssp.Comment(this.src, kukit.kssp.commentbegin)',"(":'new kukit.kssp.MethodArgs(this.src, kukit.kssp.openparent)'});kukit.kssp.PropValue.prototype.process=function(){var cursor={'next':0};this.digestTxt(cursor,kukit.tk.Fraction,kukit.kssp.Comment);this.txt='';var txt=cursor.txt;if(this.ifToken(cursor,kukit.kssp.String)){if(txt){this.emitError(kukit.E)}
this.expectToken(cursor,kukit.kssp.String);this.produceTxt(cursor.token.txt)} else if(this.ifToken(cursor,kukit.kssp.MethodArgs)){if(!txt||txt.indexOf(' ')!=-1){this.emitError(kukit.E)}
this.expectToken(cursor,kukit.kssp.MethodArgs);this.value=new this.valueClass(txt,cursor.token.args)} else{if(!this.multiword_allowed&&txt.indexOf(' ')!=-1){this.emitError(kukit.E)}
this.produceTxt(txt)}
if(cursor.next<this.result.length){this.digestTxt(cursor,kukit.tk.Fraction,kukit.kssp.Comment);if(cursor.next<this.result.length||cursor.txt){this.emitError(kukit.E)}}
this.result=[]};kukit.kssp.PropValue.prototype.multiword_allowed=true;kukit.kssp.PropValue.prototype.valueClass=kukit.rd.KssMethodValue;kukit.kssp.PropValue.prototype.produceTxt=function(txt){this.value=new kukit.rd.KssTextValue(txt)};kukit.kssp.PropValueInMethod=kukit.tk.mkParser('propvalue',{";":'this.emitAndReturn()',"}":'this.emitAndReturn()',")":'this.emitAndReturn()',"]":'this.emitAndReturn()',",":'this.emitAndReturn()',"'": 'new kukit.kssp.String(this.src,kukit.kssp.quote)','"':'new kukit.kssp.String2(this.src, kukit.kssp.dquote)',"\/\*":'new kukit.kssp.Comment(this.src, kukit.kssp.commentbegin)'});kukit.kssp.PropValueInMethod.prototype.multiword_allowed=false;kukit.kssp.PropValueInMethod.prototype.process=kukit.kssp.PropValue.prototype.process;kukit.kssp.PropValueInMethod.prototype.produceTxt=function(txt){this.txt=txt};kukit.kssp.PropValueInPseudo=kukit.tk.mkParser('propvalue',{"{":'this.emitAndReturn()'," ":'this.emitAndReturn()',"\t":'this.emitAndReturn()',"\n":'this.emitAndReturn()',"\r":'this.emitAndReturn()',"\/\*":'this.emitAndReturn()',":":'this.emitAndReturn()',"(":'this.emitAndReturn(new kukit.kssp.MethodArgs(this.src,'+'kukit.kssp.openparent))'});kukit.kssp.PropValueInPseudo.prototype.multiword_allowed=false;kukit.kssp.PropValueInPseudo.prototype.process=kukit.kssp.PropValue.prototype.process;kukit.kssp.PropValueInPseudo.prototype.valueClass=kukit.rd.KssPseudoValue;kukit.kssp.PropValueInPseudo.prototype.produceTxt=function(txt){this.value=new kukit.rd.KssPseudoValue(txt,[])};kukit.kssp.String=kukit.tk.mkParser('string',{"'": 'this.emitAndReturn(new kukit.kssp.quote(this.src))','\x5c':'new kukit.kssp.Backslashed(this.src, kukit.kssp.backslash)'});kukit.kssp.String.prototype.process=function(){this.txt='';for(var i=1;i<this.result.length-1;i++){this.txt+=this.result[i].txt}};kukit.kssp.String2=kukit.tk.mkParser('string',{'"':'this.emitAndReturn(new kukit.kssp.dquote(this.src))','\x5c':'new kukit.kssp.Backslashed(this.src, kukit.kssp.backslash)'});kukit.kssp.String2.prototype.process=kukit.kssp.String.prototype.process;kukit.kssp.Backslashed=kukit.tk.mkParser('backslashed',{});kukit.kssp.Backslashed.prototype.nextStep=function(table){var src=this.src;var length=src.text.length;if(length<src.pos+1){this.emitError(kukit.E)} else{this.result.push(new kukit.tk.Fraction(src,src.pos+1));this.src.pos+=1;this.finished=true}};kukit.kssp.Backslashed.prototype.process=function(){this.txt=this.result[1].txt};kukit.kssp.MethodArgs=kukit.tk.mkParser('methodargs',{"'": 'new kukit.kssp.String(this.src,kukit.kssp.quote)','"':'new kukit.kssp.String2(this.src, kukit.kssp.dquote)',",":'new kukit.kssp.comma(this.src)',")":'this.emitAndReturn(new kukit.kssp.closeparent(this.src))',"\/\*":'new kukit.kssp.Comment(this.src, kukit.kssp.commentbegin)'});kukit.kssp.MethodArgs.prototype.process=function(){this.args=[];var cursor={'next':1};while(cursor.next<this.result.length-1){this.digestTxt(cursor,kukit.tk.Fraction,kukit.kssp.Comment);var value=cursor.txt;if(!value){if(cursor.next==this.result.length-1) break;this.expectToken(cursor,kukit.kssp.String);value=cursor.token.txt} else{if(value.indexOf(' ')!=-1){this.emitError(kukit.E)}}
this.args.push(value);if(cursor.next==this.result.length-1) break;this.expectToken(cursor,kukit.kssp.comma)}
this.result=[];this.txt=''};kukit.kssp.KssSelector=kukit.tk.mkParser('kssselector',{":":'[new kukit.kssp.colon(this.src), new '+'kukit.kssp.PropValueInPseudo(this.src)]',"{":'this.emitAndReturn()',"\/\*":'new kukit.kssp.Comment(this.src, kukit.kssp.commentbegin)'});kukit.kssp.KssSelector.prototype.process=function(){var name;var namespace=null;var id=null;var tokenindex=this.result.length-1;var cycle=true;while(cycle&&tokenindex>=0){var token=this.result[tokenindex];switch(token.symbol){case kukit.tk.Fraction.prototype.symbol:{if(token.txt.match(/^[\r\n\t ]*$/)!=null){tokenindex-=1} else{this.emitError(kukit.E)}} break;case kukit.kssp.Comment.prototype.symbol:{tokenindex-=1} break;default:{cycle=false} break}}
tokenindex-=2;if(tokenindex<0||(this.result[tokenindex+2].symbol!=kukit.kssp.PropValueInPseudo.prototype.symbol)||(this.result[tokenindex+1].symbol!=kukit.kssp.colon.prototype.symbol)||(this.result[tokenindex].symbol!=kukit.tk.Fraction.prototype.symbol)){this.emitError(kukit.E)}
var lasttoken=this.result[tokenindex];var commatoken=this.result[tokenindex+1];var pseudotoken=this.result[tokenindex+2];var txt=lasttoken.txt;if(txt.match(/[\r\n\t ]$/)!=null){this.emitError(kukit.E)}
if(!pseudotoken.value.methodName){this.emitError(kukit.E)}
if(pseudotoken.value.args.length>1){this.emitError(kukit.E)}
css=this.src.text.substring(this.startpos,commatoken.startpos);var singleword=css.replace(/[\r\n\t ]/g,' ');if(singleword&&singleword.charAt(0)==' '){singleword=singleword.substring(1)}
var isEvent=(singleword!='document'&&singleword!='behaviour');if(!isEvent){css=singleword}
var id=null;if(pseudotoken.value.args.length==1){id=pseudotoken.value.args[0]}
var name=pseudotoken.value.methodName;var splitname=name.split('-');var namespace=null;if(splitname.length>2){this.emitError(kukit.E)} else if(splitname.length==2){name=splitname[1];namespace=splitname[0]}
this.kssSelector=new kukit.rd.KssSelector(isEvent,css,name,namespace,id);this.txt='';this.result=[]};kukit.kssp.KssRuleProcessor=function(href){this.href=href;this.loaded=false;this.rules=[]};kukit.kssp.KssRuleProcessor.prototype.load=function(){var domDoc=new XMLHttpRequest();domDoc.open("GET",this.href,false);domDoc.send(null);this.txt=domDoc.responseText;this.loaded=true};kukit.kssp.KssRuleProcessor.prototype.parse=function(){var src=new kukit.tk.Cursor(this.txt);var parser=new kukit.kssp.Document(src,null,true);for(var i=0;i<parser.eventRules.length;i++){var rule=parser.eventRules[i];rule.kssSelector.setIdAndClass();this.rules.push(rule)}};kukit.er={};kukit.er.eventClassCounter=0;kukit.er.EventRegistry=function(){this.content={};this.classes={};this.eventSets=[]};kukit.er.EventRegistry.prototype.registerBinder=function(className,func){if(typeof(func)=='undefined'){throw kukit.E}
if(this.classes[className]){return}
kukit.er.decorateEventBinderClass(func);this.classes[className]=func};kukit.er.EventRegistry.prototype.existsBinder=function(className){var func=this.classes[className];return(typeof(func)!='undefined')};kukit.er.EventRegistry.prototype.getBinder=function(className){var func=this.classes[className];if(!func){throw kukit.E}
return func};kukit.er.EventRegistry.prototype._register=function(namespace,eventName,klass,bindMethodName,defaultActionMethodName,iterName){if(typeof(defaultActionMethodName)=='undefined'){throw kukit.E}
var className=klass.prototype.__className__;if(typeof(className)=='undefined'){className=''+kukit.er.eventClassCounter;kukit.er.eventClassCounter+=1;this.registerBinder(className,klass);klass.prototype.__className__=className}
if(!eventName){throw kukit.E}
var key=this._getKey(namespace,eventName);var entry=this.content[key];if(typeof(entry)!='undefined'){if(key[0]=='-'){key=key.substring(1)}
throw kukit.E}
if(bindMethodName&&!klass.prototype[bindMethodName]){throw kukit.E}
if(defaultActionMethodName&&!klass.prototype[defaultActionMethodName]){throw kukit.E}
if(!kukit.er.getBindIterator(iterName)){throw kukit.E}
this.content[key]={'className':className,'bindMethodName':bindMethodName,'defaultActionMethodName':defaultActionMethodName,'iterName':iterName}};kukit.er.EventRegistry.prototype._registerEventSet=function(namespace,names,iterName,bindMethodName){this.eventSets.push({'namespace':namespace,'names':names,'iterName':iterName,'bindMethodName':bindMethodName})};kukit.er.EventRegistry.prototype.register=function(namespace,eventName,klass,bindMethodName,defaultActionMethodName){this._register(namespace,eventName,klass,bindMethodName,defaultActionMethodName,'EachLegacy');this._registerEventSet(namespace,[eventName],'EachLegacy',bindMethodName)};kukit.er.EventRegistry.prototype.registerForAllEvents=function(namespace,eventNames,klass,bindMethodName,defaultActionMethodName,iterName){if(typeof(eventNames)=='string'){eventNames=[eventNames]}
for(var i=0;i<eventNames.length;i++){var eventName=eventNames[i];this._register(namespace,eventName,klass,bindMethodName,defaultActionMethodName,iterName)}
this._registerEventSet(namespace,eventNames,iterName,bindMethodName)};kukit.er.EventRegistry.prototype._getKey=function(namespace,eventName){if(namespace==null){namespace=''} else if(namespace.split('-')>1){throw kukit.E}
return namespace+'-'+eventName};kukit.er.EventRegistry.prototype.exists=function(namespace,eventName){var key=this._getKey(namespace,eventName);var entry=this.content[key];return(typeof(entry)!='undefined')};kukit.er.EventRegistry.prototype.get=function(namespace,eventName){var key=this._getKey(namespace,eventName);var entry=this.content[key];if(typeof(entry)=='undefined'){throw kukit.E}
return entry};kukit.eventsGlobalRegistry=new kukit.er.EventRegistry();kukit.er.eventRegistry={};kukit.er.eventRegistry.register=function(namespace,eventName,klass,bindMethodName,defaultActionMethodName){kukit.eventsGlobalRegistry.register(namespace,eventName,klass,bindMethodName,defaultActionMethodName)};kukit.er.EventBinder__continueEvent__=function(name,node,defaultParameters){var oper=new kukit.op.Oper();oper.node=node;if(node){var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binderId__);var newOper=info.bound.getBoundOperForNode(name,node);if(newOper){oper=newOper}} else{oper.eventRule=kukit.engine.documentRules.getMergedRule('document',name,this)}
var behav_eventRule=kukit.engine.documentRules.getMergedRule('behaviour',name,this);if(behav_eventRule){if(!oper.eventRule){oper.eventRule=behav_eventRule} else{}}
if(typeof(defaultParameters)!='undefined'){oper.defaultParameters=defaultParameters} else{oper.defaultParameters={}}
this._EventBinder_triggerEvent(name,oper)};kukit.er.EventBinder__continueEvent_allNodes__=function(name,defaultParameters){var executed=0;var oper=new kukit.op.Oper();var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binderId__);var opers=info.bound.getBoundOpers(name);for(var i=0;i<opers.length;i++){var oper=opers[i];var newOper=oper.clone();if(typeof(defaultParameters)!='undefined'){newOper.defaultParameters=defaultParameters} else{newOper.defaultParameters={}}
this._EventBinder_triggerEvent(name,newOper);executed+=1}};kukit.er.EventBinder_makeFuncToBind=function(name,node){var executor=new kukit.er.LateBinder(this,name,node);return function(){executor.executeActions()}};kukit.er.LateBinder=function(binderInstance,name,node){this.binderInstance=binderInstance;this.name=name;this.node=node;this.bound=null};kukit.er.LateBinder.prototype.executeActions=function(){if(!this.bound){if(kukit.hasFirebug){kukit.log(this.node)}
var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.binderInstance.__binderId__);var oper=info.bound.getBoundOperForNode(this.name,this.node);if(oper){oper.parms={};this.bound=function(){this.binderInstance._EventBinder_triggerEvent(this.name,oper)}} else{this.bound=function(){}}}
this.bound()};kukit.er.EventBinder_triggerEvent=function(name,oper){oper.binderInstance=this;if(oper.eventRule){oper.eventRule.actions.execute(oper)} else{var namespace=this.__eventNamespace__;var success=oper.executeDefaultAction(name,true);if(!success){throw kukit.E}}};kukit.er.EventBinder_callMethod=function(namespace,name,oper,methodName){var method=this[methodName];if(!method){throw kukit.E}
oper.binderInstance=this;method.call(this,name,oper)};kukit.er.decorateEventBinderClass=function(cls){cls.prototype.__continueEvent__=kukit.er.EventBinder__continueEvent__;cls.prototype.__continueEvent_allNodes__=kukit.er.EventBinder__continueEvent_allNodes__;cls.prototype._EventBinder_triggerEvent=kukit.er.EventBinder_triggerEvent;cls.prototype._EventBinder_callMethod=kukit.er.EventBinder_callMethod;cls.prototype.__makeFuncToBind__=kukit.er.EventBinder_makeFuncToBind};kukit.er.BinderInfoRegistry=function(){this.info={}};kukit.er.BinderInfoRegistry.prototype.getOrCreateBinderInfo=function(id,className,namespace){var binderInfo=this.info[id];if(typeof(binderInfo)=='undefined'){var binder=kukit.eventsGlobalRegistry.getBinder(className);var binderInstance=new binder();binderInfo=this.info[id]=new kukit.er.BinderInfo(binderInstance);binderInstance.__binderId__=id;binderInstance.__binderClassName__=className;binderInstance.__eventNamespace__=namespace} else if(binderInfo.getBinderInstance().__binderClassName__!=className){throw kukit.E}
return binderInfo};kukit.er.BinderInfoRegistry.prototype.getBinderInfoById=function(id){var binderInfo=this.info[id];if(typeof(binderInfo)=='undefined'){throw kukit.E}
return binderInfo};kukit.er.BinderInfoRegistry.prototype.getSingletonBinderInfoByName=function(namespace,name){var className=kukit.eventsGlobalRegistry.get(namespace,name).className;var id=kukit.rd.makeId(namespace,className);var binderInfo=this.info[id];if(typeof(binderInfo)=='undefined'){throw kukit.E}
return binderInfo};kukit.er.BinderInfoRegistry.prototype.startBindingPhase=function(){for(var id in this.info){var binderInfo=this.info[id];binderInfo.startBindingPhase()}};kukit.er.BinderInfoRegistry.prototype.processBindingEvents=function(){for(var id in this.info){var binderInfo=this.info[id];binderInfo.processBindingEvents()}};kukit.er.BinderInfo=function(binderInstance){this.binderInstance=binderInstance;this.bound=new kukit.er.OperRegistry();this.startBindingPhase()};kukit.er.BinderInfo.prototype.getBinderInstance=function(){return this.binderInstance};kukit.er.BinderInfo.prototype.startBindingPhase=function(){this.binding=new kukit.er.OperRegistry()};kukit.er.BinderInfo.prototype.bindOper=function(oper){this.bound.checkOperBindable(oper);this.binding.bindOper(oper)};kukit.er.BinderInfo.prototype.processBindingEvents=function(){this.binding.processBindingEvents(this.binderInstance);this.binding.propagateTo(this.bound);this.binding=null};kukit.er.OperRegistry=function(){this.infoPerName={};this.infoPerNode={}};kukit.er.OperRegistry.prototype.propagateTo=function(newreg){for(var key in this.infoPerName){var rulesPerName=this.infoPerName[key];for(var name in rulesPerName){var oper=rulesPerName[name];newreg.bindOper(oper)}}};kukit.er.OperRegistry.prototype.checkOperBindable=function(oper,name,nodeHash){var info=this.infoPerName;if(typeof(nodeHash)=='undefined'){name=oper.eventRule.kssSelector.name;nodeHash=kukit.rd.hashNode(oper.node)}
var rulesPerName=info[name];if(typeof(rulesPerName)=='undefined'){rulesPerName=info[name]={}} else if(typeof(rulesPerName[nodeHash])!='undefined'){throw kukit.E}
return rulesPerName};kukit.er.OperRegistry.prototype.bindOper=function(oper){var name=oper.eventRule.kssSelector.name;var nodeHash=kukit.rd.hashNode(oper.node);var rulesPerName=this.checkOperBindable(oper,name,nodeHash);rulesPerName[nodeHash]=oper;var rulesPerNode=this.infoPerNode[nodeHash];if(typeof(rulesPerNode)=='undefined'){rulesPerNode=this.infoPerNode[nodeHash]={}}
rulesPerNode[name]=oper};kukit.er.OperRegistry.prototype.processBindingEvents=function(binderInstance){var eventRegistry=kukit.eventsGlobalRegistry;for(var i=0;i<eventRegistry.eventSets.length;i++){var eventSet=eventRegistry.eventSets[i];if(eventSet.bindMethodName){if(binderInstance.__eventNamespace__==eventSet.namespace){var iterator=kukit.er.getBindIterator(eventSet.iterName);iterator.call(this,eventSet,binderInstance)}}}};kukit.er.OperRegistry.prototype.getBoundOperForNode=function(name,node){var rulesPerName=this.infoPerName[name];if(typeof(rulesPerName)=='undefined'){return null}
var nodeHash=kukit.rd.hashNode(node);var oper=rulesPerName[nodeHash];if(typeof(oper)=='undefined'){return null}
return oper};kukit.er.OperRegistry.prototype.getBoundOpers=function(name){var opers=[];var rulesPerName=this.infoPerName[name];if(typeof(rulesPerName)!='undefined'){for(var nodeHash in rulesPerName){opers.push(rulesPerName[nodeHash])}}
return opers};kukit.er.getBindIterator=function(iterName){var canonical=iterName.substring(0,1).toUpperCase()+iterName.substring(1);if(iterName!=canonical){iterName=canonical}
return kukit.er.OperRegistry.prototype['_iterate'+iterName]};kukit.er.OperRegistry.prototype.callBindMethod=function(eventSet,binderInstance,p1,p2,p3,p4,p5,p6){var method=binderInstance[eventSet.bindMethodName];method.call(binderInstance,p1,p2,p3,p4,p5,p6)};kukit.er.OperRegistry.prototype._iterateEachLegacy=function(eventSet,binderInstance){for(var i=0;i<eventSet.names.length;i++){var rulesPerName=this.infoPerName[eventSet.names[i]];if(typeof(rulesPerName)!='undefined'){for(var nodeHash in rulesPerName){var oper=rulesPerName[nodeHash];var eventName=oper.getEventName();var funcToBind=oper.makeExecuteActionsHook();this.callBindMethod(eventSet,binderInstance,eventName,funcToBind,oper)}}}};kukit.er.OperRegistry.prototype._iterateEach=function(eventSet,binderInstance){for(var i=0;i<eventSet.names.length;i++){var rulesPerName=this.infoPerName[eventSet.names[i]];if(typeof(rulesPerName)!='undefined'){for(var nodeHash in rulesPerName){var oper=rulesPerName[nodeHash];this.callBindMethod(eventSet,binderInstance,oper)}}}};kukit.er.OperRegistry.prototype._iterateOpers=function(eventSet,binderInstance){var opers=[];for(var i=0;i<eventSet.names.length;i++){var rulesPerName=this.infoPerName[eventSet.names[i]];if(typeof(rulesPerName)!='undefined'){for(var nodeHash in rulesPerName){opers.push(rulesPerName[nodeHash])}}}
this.callBindMethod(eventSet,binderInstance,opers)};kukit.er.OperRegistry.prototype._iterateNode=function(eventSet,binderInstance){for(var nodeHash in this.infoPerNode){var rulesPerNode=this.infoPerNode[nodeHash];var filteredRules={};var operFound=false;for(var i=0;i<eventSet.names.length;i++){var name=eventSet.names[i];var oper=rulesPerNode[name];if(typeof(oper)!='undefined'){filteredRules[name]=oper;operFound=oper}}
if(operFound){this.callBindMethod(eventSet,binderInstance,filteredRules,operFound.node)}}};kukit.er.OperRegistry.prototype._iterateAllNodes=function(eventSet,binderInstance){var items=[];var hasResult=false;for(var nodeHash in this.infoPerNode){var rulesPerNode=this.infoPerNode[nodeHash];var filteredRules={};var operFound=false;for(var i=0;i<eventSet.names.length;i++){var name=eventSet.names[i];var oper=rulesPerNode[name];if(typeof(oper)!='undefined'){filteredRules[name]=oper;operFound=oper}}
if(operFound){var item={node:operFound.node,opersByEventName:filteredRules};items.push(item);hasResult=true}}
if(hasResult){this.callBindMethod(eventSet,binderInstance,items)}};kukit.ar={};kukit.ar.ActionRegistry=function(){this.content={}};kukit.ar.ActionRegistry.prototype.register=function(name,func){if(this.content[name]){return}
this.content[name]=func};kukit.ar.ActionRegistry.prototype.exists=function(name){var entry=this.content[name];return(typeof(entry)!='undefined')};kukit.ar.ActionRegistry.prototype.get=function(name){var func=this.content[name];if(!func){throw kukit.E}
return func};kukit.actionsGlobalRegistry=new kukit.ar.ActionRegistry();kukit.ar.actionRegistry={};kukit.ar.actionRegistry.register=function(name,func){kukit.actionsGlobalRegistry.register(name,func)};kukit.dom={};kukit.dom.getPreviousSiblingTag=function(node){var toNode=node.previousSibling;while((toNode!=null)&&(toNode.nodeType!=1)){toNode=toNode.previousSibling}
return toNode};kukit.dom.getNextSiblingTag=function(node){var toNode=node.nextSibling;while((toNode!=null)&&(toNode.nodeType!=1)){toNode=toNode.nextSibling}
return toNode};kukit.dom.insertBefore=function(nodeFrom,parentNode,nodeTo){var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;var nodes=nodeFrom.childNodes;var result=new Array();if(ownerDoc.importNode&&(!kukit.HAVE_IE)){for(var i=0;i<nodes.length;i++){var imported=ownerDoc.importNode(nodes[i],true);result[i]=parentNode.insertBefore(imported,nodeTo)}} else{for(var i=0;i<nodes.length;i++){var cloned=nodes[i].cloneNode(true);result[i]=parentNode.insertBefore(cloned,nodeTo)}}
return result};kukit.dom.appendChildren=function(nodes,toNode){var ownerDoc=toNode.nodeType==Node.DOCUMENT_NODE?toNode:toNode.ownerDocument;var result=new Array();if(ownerDoc.importNode&&(!kukit.HAVE_IE)){for(var i=0;i<nodes.length;i++){result[i]=toNode.appendChild(ownerDoc.importNode(nodes[i],true))}}else{for(var i=0;i<nodes.length;i++){result[i]=toNode.appendChild(nodes[i].cloneNode(true))}}
return result};kukit.dom.clearChildNodes=function(node){Sarissa.clearChildNodes(node)};kukit.dom.forceToDom=function(param){if(typeof(param)=='string'){var rootText='<html xmlns="http://www.w3.org/1999/xhtml"><div>';rootText+=param+'</div></html>';var doc=(new DOMParser()).parseFromString(rootText,"text/xml");var root=doc.getElementsByTagName('div')[0];param=root}
if(param.ownerDocument!=document){param=document.importNode(param,true)}
return param};kukit.dom.cssQuery=function(selector,inNodes){if(typeof(inNodes)!='undefined'&&inNodes==null){throw kukit.E}
return kukit.dom._cssQuery(selector,inNodes)};kukit.dom._cssQuery=function(selector,inNodes){var USE_BASE2=(typeof(base2)!='undefined');if(USE_BASE2){kukit.dom._cssQuery=kukit.dom._cssQuery_base2} else{kukit.dom._cssQuery=kukit.dom._cssQuery_orig}
return kukit.dom._cssQuery(selector,inNodes)};kukit.dom._cssQuery_base2=function(selector,inNodes){var results=base2.DOM.Document.matchAll(document,selector);var nodes=[];for(var i=0;i<results.length;i++){nodes.push(results.item(i))}
return nodes};kukit.dom._cssQuery_orig=function(selector,inNodes){var results=cssQuery(selector);return results};kukit.dom.focus=function(node){tagName=node.tagName.toLowerCase();if((tagName=='input')||(tagName=='select')||(tagName=='textarea')){node.focus()}};kukit.dom.textContent=function(node,recursive){var value=kukit.dom._textContent(node,recursive);value=value.replace(/\r\n/g,' ');value=value.replace(/[\r\n]/g,' ');return value};kukit.dom._textContent=function(node,recursive){if(typeof(recursive)=='undefined'){recursive=false}
var value='';var childnodes=node.childNodes;for(var i=0;i<childnodes.length;i++){var child=childnodes[i];if(child.nodeType==3){value+=child.nodeValue} else if(recursive&&child.nodeType==1){value+=kukit.dom.textContent(child,true)}}
return value};kukit.dom.getAttribute=function(node,attrname){if(attrname.toLowerCase()=='style'){throw 'Style attribute is not allowed with getAttribute'}
try{var value=node.getAttribute(attrname)}
catch(e){var value=null}
if(!value){if(attrname.toLowerCase()=='class'){value=node.className} else if(attrname.toLowerCase()=='for'){value=node.htmlFor}}
return value};kukit.dom.setAttribute=function(node,attrname,value){if(attrname.toLowerCase()=='style'){throw 'Style attribute is not allowed with setAttribute'}
else if(attrname.toLowerCase()=='class'){node.className=value} else if(attrname.toLowerCase()=='for'){node.htmlFor=value;node.setAttribute(attrname,value)} else if(attrname.toLowerCase()=='checked'){value=!(value==''||value=='false'||value=='False');node.checked=value} else{node.setAttribute(attrname,value)}};kukit.dom.kssAttrNamespace='kssattr';kukit.dom.getKssClassAttribute=function(node,attrname){var klass=kukit.dom.getAttribute(node,'class');var result=null;if(klass){var splitclass=klass.split(/ +/);for(var i=0;i<splitclass.length;i++){var elem=splitclass[i];var splitelem=elem.split('-',3);if(splitelem.length==3&&splitelem[0]==kukit.dom.kssAttrNamespace&&splitelem[1]==attrname){var index=splitelem[0].length+splitelem[1].length+2;result=elem.substr(index)}}}
return result};kukit.dom.getKssAttribute=function(node,attrname){var fullName=kukit.dom.kssAttrNamespace+':'+attrname;var result=kukit.dom.getAttribute(node,fullName);if(!result){result=kukit.dom.getKssClassAttribute(node,attrname)}
return result};kukit.dom.setKssAttribute=function(node,attrname,value){var fullName=kukit.dom.kssAttrNamespace+':'+attrname;kukit.dom.setAttribute(node,fullName)};kukit.dom.getRecursiveAttribute=function(node,attrname,recurseParents,getter){var value=getter(node,attrname);if(recurseParents){var element=node;while(!value){element=element.parentNode;if(!element||!element.getAttribute){break}
value=getter(element,attrname)}}
if(typeof(value)=='undefined'){value=null}
return value};kukit.dom.EmbeddedContentLoadedScheduler=function(framename,func,autodetect){this.framename=framename;this.func=func;this.autodetect=autodetect;var self=this;var f=function(){self.check()};this.counter=new kukit.ut.TimerCounter(250,f,true);this.counter.start()};kukit.dom.getIframeDocument=function(framename){var iframe=document.getElementById(framename);var doc=iframe.contentWindow||iframe.contentDocument;if(doc.document){doc=doc.document}
return doc};kukit.dom.EmbeddedContentLoadedScheduler.prototype.check=function(){var doc=kukit.dom.getIframeDocument(this.framename);if(doc['_'+'embeddedContentLoadedInitDone']){this.counter.restart=false}
if(typeof doc['_'+'kssReadyForLoadEvent']!='undefined'){this.counter.restart=false}
if(this.autodetect&&this.counter.restart){if(doc.location.href=='about:blank'){return}
if(/KHTML|WebKit/i.test(navigator.userAgent)){if(/loaded|complete/.test(doc.readyState)){this.counter.restart=false}} else if(typeof doc.getElementsByTagName!='undefined'&&(doc.getElementsByTagName('body')[0]!=null||doc.body!=null)){this.counter.restart=false}}
if(!this.counter.restart){doc['_'+'embeddedContentLoadedInitDone']=true;this.func()}};kukit.dom.getNsTags=function(dom,tagName){if(dom.getElementsByTagNameNS){tags=dom.getElementsByTagNameNS('http://www.kukit.org/commands/1.0',tagName)} else{tags=dom.getElementsByTagName('kukit:'+tagName)}
return tags};kukit.cr={};kukit.cr.CommandRegistry=function(){this.commands={}};kukit.cr.CommandRegistry.prototype.registerFromAction=function(srcname,factory,name){if(typeof(name)=='undefined'){name=srcname}
var f=kukit.actionsGlobalRegistry.get(srcname);factory(name,f)};kukit.cr.CommandRegistry.prototype.register=function(name,klass){if(this.commands[name]){return}
this.commands[name]=klass};kukit.cr.CommandRegistry.prototype.get=function(name){var klass=this.commands[name];return klass};kukit.commandsGlobalRegistry=new kukit.cr.CommandRegistry();kukit.cr.commandRegistry={};kukit.cr.commandRegistry.registerFromAction=function(srcname,factory,name){kukit.commandsGlobalRegistry.registerFromAction(srcname,factory,name)};kukit.cr.makeCommand=function(selector,name,type,parms,transport){var commandClass=kukit.commandsGlobalRegistry.get(name);var command=new commandClass();command.selector=selector;command.name=name;command.selectorType=type;command.parms=parms;command.transport=transport;return command};kukit.cr._Command_execute=function(oper){var newoper=oper.clone({'parms':this.parms,'orignode':oper.node,'node':null});this.executeOnScope(newoper)};kukit.cr._Command_execute_selector=function(oper){var selfunc=kukit.selectorTypesGlobalRegistry.get(this.selectorType);var nodes=selfunc(this.selector,oper.orignode,{});for(var i=0;i<nodes.length;i++){oper.node=nodes[i];this.executeOnSingleNode(oper)}};kukit.cr.makeSelectorCommand=function(name,executeOnSingleNode){var commandClass=function(){};commandClass.prototype={execute:kukit.cr._Command_execute,executeOnScope:kukit.cr._Command_execute_selector,executeOnSingleNode:executeOnSingleNode};kukit.commandsGlobalRegistry.register(name,commandClass)};kukit.cr.makeGlobalCommand=function(name,executeOnce){var commandClass=function(){};commandClass.prototype={execute:kukit.cr._Command_execute,executeOnScope:executeOnce,executeOnSingleNode:executeOnce};kukit.commandsGlobalRegistry.register(name,commandClass)};kukit.sa={};kukit.sa.ServerAction=function(name,oper){this.url=oper.kssParms.kssUrl;if(typeof(this.url)=='undefined'){this.url=name}
this.url=this.calculateAbsoluteURL(this.url);this.oper=oper;this.notifyServer()};kukit.sa.ServerAction.prototype.calculateAbsoluteURL=function(url){if(url.match(RegExp('/^https?:\/\//'))){return url} else{var result=kukit.engine.baseUrl+'/'+url;return result}};kukit.sa.ServerAction.prototype.notifyServer=function(){var self=this;var sendHook=function(queueItem){self.oper.queueItem=queueItem;self.reallyNotifyServer()};var timeoutHook=function(queueItem){self.oper.queueItem=queueItem;self.processError('timeout')};kukit.engine.requestManager.notifyServer(sendHook,this.url,timeoutHook)};kukit.sa.ServerAction.prototype.reallyNotifyServer=function(){var domDoc=new XMLHttpRequest();var self=this;var notifyServer_done=function(){self.notifyServer_done(domDoc)};var query=new kukit.fo.FormQuery();for(var key in this.oper.parms){query.appendElem(key,this.oper.parms[key])}
var submitForm=this.oper.kssParms.kssSubmitForm;if(submitForm){for(var i=0;i<submitForm.length;i++){var item=submitForm[i];query.appendElem(item[0],item[1])}}
var encoded=query.encode();var ts=new Date().getTime();var tsurl=this.url+"?kukitTimeStamp="+ts;domDoc.open("POST",tsurl,true);domDoc.onreadystatechange=notifyServer_done;domDoc.setRequestHeader("Content-Type","application/x-www-form-urlencoded");domDoc.send(encoded)};kukit.sa.ServerAction.prototype.notifyServer_done=function(domDoc){if(domDoc.readyState==4){var success=this.oper.queueItem.receivedResult();if(success){this.processResult(domDoc)}}};kukit.sa.ServerAction.prototype.processResult=function(domDoc){var dom;var commandstags=[];if(domDoc.responseXML){dom=domDoc.responseXML;commandstags=kukit.dom.getNsTags(dom,'commands');if(commandstags.length!=1){dom=null}}
if(dom==null){var payload=domDoc.getResponseHeader('X-KSSCOMMANDS');if(payload){try{dom=(new DOMParser()).parseFromString(payload,"text/xml")} catch(e){throw kukit.E}
commandstags=kukit.dom.getNsTags(dom,'commands');if(commandstags.length!=1){dom=null}} else{dom=domDoc.responseXML;throw kukit.E}}
if(dom==null){throw kukit.E}
var commands=kukit.dom.getNsTags(dom,'command');if(commands.length==0){return}
var command_processor=new kukit.cp.CommandProcessor();command_processor.parseCommands(commands,domDoc);command_processor.executeCommands(this.oper)};kukit.sa.ServerAction.prototype.processError=function(errorcommand){var error_action=null;if(this.oper.eventRule){var error_action=this.oper.eventRule.actions.getErrorActionFor(this.oper.action)}
if(error_action){error_action.execute(this.oper)} else{}};kukit.rm={};kukit.rm._rid=0;kukit.rm.RequestItem=function(sendHook,url,timeoutHook,timeout,now){if(typeof(now)=='undefined'){now=(new Date()).valueOf()}
this.sent=now;this.expire=now+timeout;this.handled=false;this.sendHook=sendHook;this.url=url;this.timeoutHook=timeoutHook;this.rid=kukit.rm._rid;kukit.rm._rid++;if(kukit.rm._rid>=10000000000){kukit.rm._rid=0}};kukit.rm.RequestItem.prototype.callTimeoutHook=function(){if(this.timeoutHook){this.timeoutHook(this)}};kukit.rm.RequestItem.prototype.setReceivedCallback=function(func){this._receivedCallback=func};kukit.rm.RequestItem.prototype.receivedResult=function(now){var result=this._receivedCallback(this,now);this._receivedCallback=null;return result};kukit.rm.TimerQueue=function(callback){this.callback=callback;this.queue=new kukit.ut.SortedQueue(this._sentSort);this.count=0};kukit.rm.TimerQueue.prototype._sentSort=function(a,b){if(a.expire<b.expire) return-1;else if(a.expire>b.expire) return+1;else return 0};kukit.rm.TimerQueue.prototype.push=function(item){this.queue.push(item);this.count+=1};kukit.rm.TimerQueue.prototype.pop=function(item){if(typeof(item)=='undefined'||item.handled){return false} else{item.handled=true;this.count-=1;return true}};kukit.rm.TimerQueue.prototype.handleExpiration=function(now){if(typeof(now)=='undefined'){now=(new Date()).valueOf()}
var to;for(to=0;to<this.queue.size();to++){var item=this.queue.get(to);if(!item.handled){if(item.expire>now){break} else{item.handled=true;this.count-=1;this.callback(item)}}}
this.queue.popn(to);var front=this.queue.front();var next_expire=null;if(front){next_expire=front.expire}
return next_expire};kukit.rm.RequestManager=function(name,maxNr,schedulerClass){this.waitingQueue=new kukit.ut.FifoQueue();this.sentNr=0;var self=this;var timeoutItem=function(item){self.timeoutItem(item)};this.timerQueue=new kukit.rm.TimerQueue(timeoutItem);if(typeof(name)=='undefined'){name=null}
this.name=name;var nameString='';if(name!=null){nameString='['+name+'] '}
this.nameString=nameString;if(typeof(maxNr)!='undefined'&&maxNr!=null){this.maxNr=maxNr}
var checkTimeout=function(){self.checkTimeout()};if(typeof(schedulerClass)=='undefined'){schedulerClass=kukit.ut.Scheduler}
this.timeoutScheduler=new schedulerClass(checkTimeout);this.spinnerEvents={'off':[],'on':[]};this.spinnerState=false};kukit.rm.RequestManager.prototype.sendingTimeout=8000;kukit.rm.RequestManager.prototype.maxNr=4;kukit.rm.RequestManager.prototype.setSpinnerState=function(newState){if(this.spinnerState!=newState){this.spinnerState=newState;var events=this.spinnerEvents[newState?'on':'off'];for(var i=0;i<events.length;i++){events[i]()}}};kukit.rm.RequestManager.prototype.pushWaitingRequest=function(item,now){this.waitingQueue.push(item);this.checkTimeout(now)};kukit.rm.RequestManager.prototype.popWaitingRequest=function(){var q=this.waitingQueue;while(!q.empty()&&q.front().handled){q.pop()}
if(!q.empty()){return q.pop()} else{return null}};kukit.rm.RequestManager.prototype.pushSentRequest=function(item,now){this.sentNr+=1;this.setSpinnerState(true);this.checkTimeout(now);var self=this;var func=function(item,now){return self.receiveItem(item,now)};item.setReceivedCallback(func);item.sendHook(item)};kukit.rm.RequestManager.prototype.checkTimeout=function(now){var nextWake=this.timerQueue.handleExpiration(now);if(nextWake){nextWake+=50} else{this.setSpinnerState(false)}
this.timeoutScheduler.setNextWakeAtLeast(nextWake)};kukit.rm.RequestManager.prototype.popSentRequest=function(item){var success=this.timerQueue.pop(item);this.sentNr-=1;return success};kukit.rm.RequestManager.prototype.isSentRequestQueueFull=function(){return(this.sentNr>=this.maxNr)};kukit.rm.RequestManager.prototype.receivedResult=function(item,now){var success=this.popSentRequest(item);var waiting=this.popWaitingRequest();if(waiting!=null){this.pushSentRequest(waiting,now)} else{this.setSpinnerState(false)}
return success};kukit.rm.RequestManager.prototype.receiveItem=function(item,now){var success=this.receivedResult(item,now);return success};kukit.rm.RequestManager.prototype.timeoutItem=function(item){item.callTimeoutHook()};kukit.rm.RequestManager.prototype.notifyServer=function(sendHook,url,timeoutHook,timeout,now){if(typeof(timeout)=='undefined'){timeout=this.sendingTimeout}
var item=new kukit.rm.RequestItem(sendHook,url,timeoutHook,timeout,now);this.timerQueue.push(item);if(!this.isSentRequestQueueFull()){this.pushSentRequest(item,now)} else{this.pushWaitingRequest(item,now)}};kukit.rm.RequestManager.prototype.registerSpinnerEvent=function(func,state){this.spinnerEvents[state?'on':'off'].push(func)};kukit.cp={};kukit.cp.CommandProcessor=function(){this.commands=new Array()};kukit.cp.CommandProcessor.prototype.parseCommands=function(commands,transport){for(var y=0;y<commands.length;y++){var command=commands[y];this.parseCommand(command,transport);var lastcommand=this.commands[this.commands.length-1];if(lastcommand.name=='error'){throw kukit.E}}};kukit.cp.CommandProcessor.prototype.parseCommand=function(command,transport){var selector="";var params={};var name="";selector=command.getAttribute("selector");name=command.getAttribute("name");type=command.getAttribute("selectorType");if(name==null)
name="";var childNodes=command.childNodes;for(var n=0;n<childNodes.length;n++){var childNode=childNodes[n];if(childNode.nodeType!=1)
continue;if(childNode.localName){if(childNode.localName.toLowerCase()!="param"&&childNode.nodeName.toLowerCase()!="kukit:param"){throw 'Bad payload, expected param'}} else{if(childNode.nodeName.toLowerCase()!="kukit:param"){throw 'Bad payload, expected kukit:param'}}
data=childNode.getAttribute('name');if(data!=null){var childCount=childNode.childNodes.length;var result;if(childCount==0){result=''} else if(childCount==1&&childNode.firstChild.nodeType==3){result=childNode.firstChild.nodeValue} else{result=childNode}
params[data]=result} else{throw 'Bad payload, expected attribute "name"'}}
var command=new kukit.cr.makeCommand(selector,name,type,params,transport);this.addCommand(command)};kukit.cp.CommandProcessor.prototype.addCommand=function(command){this.commands[this.commands.length]=command};kukit.cp.CommandProcessor.prototype.executeCommands=function(oper){kukit.engine.beginSetupEventsCollection();if(typeof(oper)=='undefined'||oper==null){oper=new kukit.op.Oper()}
var commands=this.commands;for(var y=0;y<commands.length;y++){var command=commands[y];command.execute(oper)}
kukit.engine.finishSetupEventsCollection()};kukit.sr={};kukit.sr.pproviderSelRegistry=new kukit.pr.ValueProviderRegistry();kukit.sr.AnyPP=function(){};kukit.sr.AnyPP.prototype={check: function(args){},eval: function(args,node,defaultParameters){var f=kukit.selectorTypesGlobalRegistry.get(this.selector_type);return f(args[0],node,defaultParameters,node)}};kukit.sr.pproviderSelRegistry.register('',kukit.sr.AnyPP);kukit.sr.makeAnyPP=function(selector_type){var pp=function(){};pp.prototype.eval=kukit.sr.AnyPP.prototype.eval;pp.prototype.selector_type=selector_type;return pp};kukit.sr.PassnodePP=function(){};kukit.sr.PassnodePP.prototype={check: function(args){},eval: function(args,node,defaultParameters){var value=defaultParameters[args[0]];if(typeof(value)=='undefined'){throw kukit.E}
nodes=[value];return nodes}};kukit.sr.pproviderSelRegistry.register('passnode',kukit.sr.PassnodePP);kukit.sr.SelectorTypeRegistry=function(){this.mapping={}};kukit.sr.SelectorTypeRegistry.prototype.defaultSelectorType='css';kukit.sr.SelectorTypeRegistry.prototype.register=function(name,func){if(typeof(func)=='undefined'){throw 'Func is mandatory.'}
this.mapping[name]=func;var pp=kukit.sr.makeAnyPP(name);kukit.sr.pproviderSelRegistry.register(name,pp)};kukit.sr.SelectorTypeRegistry.prototype.get=function(name){if(!name){name=this.defaultSelectorType}
var result=this.mapping[name];return result};kukit.selectorTypesGlobalRegistry=new kukit.sr.SelectorTypeRegistry();kukit.selectorTypesGlobalRegistry.register('htmlid', function(expr,node){var nodes=[];var node=document.getElementById(expr);if(node){nodes.push(node)}
return nodes});kukit.selectorTypesGlobalRegistry.register('css', function(expr,node){var nodes=kukit.dom.cssQuery(expr);return nodes});kukit.selectorTypesGlobalRegistry.register('samenode', function(expr,node){nodes=[node];return nodes});kukit.selectorTypesGlobalRegistry.register('parentnode', function(expr,node){var selectednodes=kukit.dom.cssQuery(expr);var parentnodes=[];var parentnode=node.parentNode;while(parentnode.parentNode){parentnodes.push(parentnode);parentnode=parentnode.parentNode}
var results=[];for(var i=0;i<selectednodes.length;i++){var inchain=false;for(var j=0;j<parentnodes.length;j++){if(selectednodes[i]===parentnodes[j]){inchain=true}}
if(inchain){results.push(selectednodes[i])}}
return results});kukit.fo={};kukit.fo.dictprefix='';kukit.fo.dictseparator='.';kukit.fo.dictpostfix=':record';kukit.fo.FormQueryElem=function(name,value){this.name=name;this.value=value};kukit.fo.FormQueryElem.prototype.encode=function(){return this.name+"="+encodeURIComponent(this.value)};kukit.fo.FormQuery=function(){this.l=[]};kukit.fo.FormQuery.prototype.appendElem=function(name,value){if(value==null){}
else if(typeof(value)=='string'){var elem=new kukit.fo.FormQueryElem(name,value);this.l.push(elem)}
else if(typeof(value)=='object'&&value.constructor.toString().indexOf('Array')!=-1){for(var i=0;i<value.length;i++){var elem=new kukit.fo.FormQueryElem(name,value[i]);this.l.push(elem)}}
else if(typeof(value)=='object'){for(var key in value){var qkey=kukit.fo.dictprefix+name+kukit.fo.dictseparator;qkey+=key+kukit.fo.dictpostfix;var elem=new kukit.fo.FormQueryElem(qkey,value[key]);this.l.push(elem)}}};kukit.fo.FormQuery.prototype.encode=function(){var poster=[];for(var i=0;i<this.l.length;i++){poster[poster.length]=this.l[i].encode()}
return poster.join("&")};kukit.fo.FormQuery.prototype.toDict=function(){var d={};for(var i=0;i<this.l.length;i++){var elem=this.l[i];d[elem.name]=elem.value}
return d};kukit.fo.findContainer=function(node,func){while(node!=null){if(func(node)){return node}
node=node.parentNode}
return null};kukit.fo.CurrentFormLocator=function(target){this.target=target};kukit.fo.CurrentFormLocator.prototype.queryForm=function(){return kukit.fo.findContainer(this.target, function(node){if(!node.nodeName){return false}
if(node.nodeName.toLowerCase()=="form"){return true} else{return false}})};kukit.fo.CurrentFormLocator.prototype.getForm=function(){var form=this.queryForm();if(!form){return null}
return form};kukit.fo.NamedFormLocator=function(formname){this.formname=formname};kukit.fo.NamedFormLocator.prototype.queryForm=function(){return document.forms[this.formname]};kukit.fo.NamedFormLocator.prototype.getForm=kukit.fo.CurrentFormLocator.prototype.getForm;kukit.fo.getValueOfFormElement=function(element){kukit.fo.fieldUpdateRegistry.doUpdate(element);if(element.selectedIndex!=undefined){if(!element.multiple){if(element.selectedIndex<0){value=""} else{var option=element.options[element.selectedIndex];value=option.value;if(value==""){value=option.text}}} else{var value=[];for(i=0;i<element.options.length;i++){var option=element.options[i];if(option.selected){value.push(option.value)}}}} else if(typeof element.length!='undefined'&&typeof element.item!='undefined'&&element.item(0).type=="radio"){var radioList=element;value=null;for(var i=0;i<radioList.length;i++){var radio=radioList.item(i);if(radio.checked){value=radio.value}}} else if(element.type=="radio"||element.type=="checkbox"){if(element.checked){value=element.value} else{value=null}} else if((element.tagName.toLowerCase()=='textarea')||(element.tagName.toLowerCase()=='input'&&element.type!='submit'&&element.type!='reset')){value=element.value} else{value=null}
return value};kukit.fo.getFormVar=function(locator,name){var form=locator.getForm();if(!form)
return null;var value=null;var element=form[name];if(element){var value=kukit.fo.getValueOfFormElement(element)}
return value};kukit.fo.getAllFormVars=function(locator,collector){var form=locator.getForm();if(!form)
return collector.result;var elements=form.elements;for(var y=0;y<elements.length;y++){var element=elements[y];var value=kukit.fo.getValueOfFormElement(element);if(value!=null){collector.add(element.name,value)}}
return collector.result};kukit.fo.FieldUpdateRegistry=function(){this.editors={}};kukit.fo.FieldUpdateRegistry.prototype.register=function(node,editor){var hash=kukit.rd.hashNode(node);if(typeof(this.editors[hash])!='undefined'){throw kukit.E}
this.editors[hash]=editor;editor.doInit()};kukit.fo.FieldUpdateRegistry.prototype.doUpdate=function(node){var hash=kukit.rd.hashNode(node);var editor=this.editors[hash];if(typeof(editor)!='undefined'){editor.doUpdate(node)}};kukit.fo.fieldUpdateRegistry=new kukit.fo.FieldUpdateRegistry();kukit.fo.pproviderFormRegistry=new kukit.pr.ValueProviderRegistry();kukit.fo.FormPP=function(){};kukit.fo.FormPP.prototype={check: function(args){},eval: function(args,node){var locator=new kukit.fo.NamedFormLocator(args[0]);var collector=new kukit.ut.TupleCollector();return kukit.fo.getAllFormVars(locator,collector)}};kukit.fo.pproviderFormRegistry.register('form',kukit.fo.FormPP);kukit.fo.CurrentFormPP=function(){};kukit.fo.CurrentFormPP.prototype={check: function(args){},eval: function(args,node){var locator=new kukit.fo.CurrentFormLocator(node);var collector=new kukit.ut.TupleCollector();return kukit.fo.getAllFormVars(locator,collector)}};kukit.fo.pproviderFormRegistry.register('currentForm',kukit.fo.CurrentFormPP);kukit.fo.pproviderFormRegistry.register('',kukit.fo.FormPP);kukit.fo.getCurrentForm=function(target){return new kukit.fo.CurrentFormLocator(target).getForm()};kukit.fo.getFormVarFromCurrentForm=function(target,name){return kukit.fo.getFormVar(new kukit.fo.CurrentFormLocator(target),name)};kukit.fo.getFormVarFromNamedForm=function(formname,name){return kukit.fo.getFormVar(new kukit.fo.NamedFormLocator(formname),name)};kukit.fo.getAllFormVarsFromCurrentForm=function(target){return kukit.fo.getAllFormVars(new kukit.fo.CurrentFormLocator(target),new kukit.ut.DictCollector())};kukit.fo.getAllFormVarsFromNamedForm=function(formname){return kukit.fo.getAllFormVars(new kukit.fo.NamedFormLocator(formname),new kukit.ut.DictCollector())};kukit.pl={};kukit.pl.getTargetForBrowserEvent=function(e){if(!e) var e=window.event;var target=null;if(e.target){target=e.target} else if(e.srcElement){target=e.srcElement}
return target};kukit.pl.registerBrowserEvent=function(oper,filter,eventName){var func_to_bind=oper.makeExecuteActionsHook(filter);if(!eventName)
eventName=oper.getEventName();var func=function(e){var target=kukit.pl.getTargetForBrowserEvent(e);if(oper.parms.allowbubbling||target==oper.node){var exc;var success;try{success=func_to_bind({'browserevent':e})} catch(exc1){exc=exc1}
if(success||exc){if(oper.parms.preventdefault){if(e.preventDefault)
e.preventDefault();try{e.returnValue=false} catch(exc2){}}
if(oper.parms.preventbubbling){if(!e) var e=window.event;e.cancelBubble=true;if(e.stopPropagation) e.stopPropagation()}}
if(exc!=null){throw exc}}};kukit.ut.registerEventListener(oper.node,eventName,func)};kukit.pl.NativeEventBinder=function(){};kukit.pl.NativeEventBinder.prototype.__bind__node=function(name,func_to_bind,oper){this.__bind__(name,func_to_bind,oper)};kukit.pl.NativeEventBinder.prototype.__bind__nodeorwindow=function(name,func_to_bind,oper){if(oper.node==null){oper.node=window}
this.__bind__(name,func_to_bind,oper)};kukit.pl.NativeEventBinder.prototype.__bind__window=function(name,func_to_bind,oper){oper.node=window;this.__bind__(name,func_to_bind,oper)};kukit.pl.NativeEventBinder.prototype.__bind__nodeordocument=function(name,func_to_bind,oper){if(oper.node==null){oper.node=document}
this.__bind__(name,func_to_bind,oper)};kukit.pl.NativeEventBinder.prototype.__bind__=function(name,func_to_bind,oper){oper.evaluateParameters([],{'preventdefault':'','allowbubbling':'','preventbubbling':''});oper.evalBool('preventdefault');oper.evalBool('allowbubbling');oper.evalBool('preventbubbling');if(oper.parms.preventdefault){if(name!='click'){throw kukit.E}}
kukit.pl.registerBrowserEvent(oper);if(oper.parms.preventdefault&&kukit.HAVE_SAFARI&&(oper.parms.allowbubbling||name=='click'&&oper.node.tagName.toLowerCase()=='a')){oper.node.onclick=function cancelClickSafari(){return false}}};kukit.pl.NativeEventBinder.prototype.__bind_key__=function(name,func_to_bind,oper){oper.evaluateParameters([],{'preventdefault':'true','allowbubbling':'','preventbubbling':'','keycodes':''});oper.evalList('keycodes');oper.evalBool('preventdefault');oper.evalBool('allowbubbling');var filter;if(oper.parms.keycodes.length>=0){var keycodes={};for(var i=0;i<oper.parms.keycodes.length;i++){keyCode=oper.parms.keycodes[i];keycodes[keyCode]=true}
filter=function(oper){var keyCode=oper.browserevent.keyCode.toString();return keycodes[keyCode]}}
kukit.pl.registerBrowserEvent(oper,filter)};kukit.eventsGlobalRegistry.register(null,'blur',kukit.pl.NativeEventBinder,'__bind__nodeorwindow',null);kukit.eventsGlobalRegistry.register(null,'focus',kukit.pl.NativeEventBinder,'__bind__nodeorwindow',null);kukit.eventsGlobalRegistry.register(null,'resize',kukit.pl.NativeEventBinder,'__bind__nodeorwindow',null);kukit.eventsGlobalRegistry.register(null,'click',kukit.pl.NativeEventBinder,'__bind__nodeordocument',null);kukit.eventsGlobalRegistry.register(null,'dblclick',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'mousedown',kukit.pl.NativeEventBinder,'__bind__nodeordocument',null);kukit.eventsGlobalRegistry.register(null,'mouseup',kukit.pl.NativeEventBinder,'__bind__nodeordocument',null);kukit.eventsGlobalRegistry.register(null,'mousemove',kukit.pl.NativeEventBinder,'__bind__nodeordocument',null);kukit.eventsGlobalRegistry.register(null,'mouseover',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'mouseout',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'change',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'reset',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'select',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'submit',kukit.pl.NativeEventBinder,'__bind__node',null);kukit.eventsGlobalRegistry.register(null,'keydown',kukit.pl.NativeEventBinder,'__bind_key__',null);kukit.eventsGlobalRegistry.register(null,'keypress',kukit.pl.NativeEventBinder,'__bind_key__',null);kukit.eventsGlobalRegistry.register(null,'keyup',kukit.pl.NativeEventBinder,'__bind_key__',null);kukit.pl.TimeoutEventBinder=function(){this.counters={}};kukit.pl.TimeoutEventBinder.prototype.__bind__=function(name,func_to_bind,oper){oper.evaluateParameters(['delay'],{'repeat':'true'});oper.evalBool('repeat');var key=oper.eventRule.getIndex();if(!(oper.parms.repeat&&this.counters[key])){var f=function(){if(oper.node!=null&&!oper.node.parentNode){this.clear()} else{func_to_bind()}};var delay=oper.parms.delay;var repeat=oper.parms.repeat;var counter=new kukit.ut.TimerCounter(delay,f,repeat);this.counters[key]=counter;counter.start()}};kukit.eventsGlobalRegistry.register(null,'timeout',kukit.pl.TimeoutEventBinder,'__bind__',null);kukit.pl.LoadEventBinder=function(){};kukit.pl.LoadEventBinder.prototype.processParameters=function(oper,iload){if(!oper){return}
if(iload){oper.evaluateParameters(['autodetect'],{'initial':'true','insert':'true'});oper.evalBool('autodetect')} else{oper.evaluateParameters([],{'initial':'true','insert':'true'})}
oper.evalBool('initial');oper.evalBool('insert');var phase;if(oper.node==null){phase=1} else{phase=oper.node._kukitmark}
if(phase==1&&!oper.parms.initial){return}
if(phase==2&&!oper.parms.insert){return}
return oper};kukit.pl.LoadEventBinder.prototype.__bind__=function(opers_by_eventName){var loadoper=opers_by_eventName.load;var iloadoper=opers_by_eventName.iload;loadoper=this.processParameters(loadoper);iloadoper=this.processParameters(iloadoper,true);var anyoper=loadoper||iloadoper;if(!anyoper){return}
if(anyoper.node!=null&&anyoper.node.tagName.toLowerCase()=='iframe'){if(loadoper&&!iloadoper){iloadoper=loadoper;loadoper=null;iloadoper.parms.autodetect=false}} else{if(iloadoper){throw kukit.E}}
if(loadoper){var func_to_bind=loadoper.makeExecuteActionsHook();var remark='';kukit.engine.bindScheduler.addPost(func_to_bind,remark)}
if(iloadoper){var phase=iloadoper.node._kukitmark;if(phase==2||(phase==1&&kukit.engine.initializedOnDOMLoad)){var g=function(){var f=function(){var func_to_bind=iloadoper.makeExecuteActionsHook();var remark='';kukit.engine.bindScheduler.addPost(func_to_bind,remark)};new kukit.dom.EmbeddedContentLoadedScheduler(iloadoper.node.id,f,iloadoper.parms.autodetect)};var remark='';kukit.engine.bindScheduler.addPost(g,remark)} else{var func_to_bind=iloadoper.makeExecuteActionsHook();var remark='';kukit.engine.bindScheduler.addPost(func_to_bind,remark)}}};kukit.eventsGlobalRegistry.registerForAllEvents(null,['load','iload'],kukit.pl.LoadEventBinder,'__bind__',null,'Node');kukit.pl.SpinnerEventBinder=function(){this.state=false;var self=this;var timeoutSetState=function(spinnerevent){self.timeoutSetState(spinnerevent)};this.scheduler=new kukit.ut.Scheduler(timeoutSetState)};kukit.pl.SpinnerEventBinder.prototype.__bind__=function(name,func_to_bind,oper){oper.evaluateParameters([],{'laziness':0});oper.evalInt('laziness');var state_to_bind=(name=='spinneron');var self=this;var func=function(){self.setState(func_to_bind,state_to_bind,oper.parms.laziness)};kukit.engine.requestManager.registerSpinnerEvent(func,state_to_bind)};kukit.pl.SpinnerEventBinder.prototype.setState=function(func_to_bind,state,laziness){this.func_to_bind=func_to_bind;this.state=state;var now=(new Date()).valueOf();var wakeUp=now+laziness;this.scheduler.setNextWakeAtLeast(wakeUp)};kukit.pl.SpinnerEventBinder.prototype.timeoutSetState=function(){this.func_to_bind()};kukit.eventsGlobalRegistry.register(null,'spinneron',kukit.pl.SpinnerEventBinder,'__bind__',null);kukit.eventsGlobalRegistry.register(null,'spinneroff',kukit.pl.SpinnerEventBinder,'__bind__',null);kukit.actionsGlobalRegistry.register('error', function(oper){throw 'The builtin error action should never execute.'});kukit.commandsGlobalRegistry.registerFromAction('error',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('logDebug', function(oper){var name='[logDebug] action';oper.evaluateParameters([],{'message':'[logDebug] action'},name);var message=oper.parms.message;kukit.logDebug(message)});kukit.commandsGlobalRegistry.registerFromAction('logDebug',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('log', function(oper){oper.evaluateParameters([],{'message':'Log action'},'log action');var message=oper.parms.message;kukit.log(message)});kukit.commandsGlobalRegistry.registerFromAction('log',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('alert', function(oper){oper.evaluateParameters([],{'message':'Alert action'},'alert action');var message=oper.parms.message;alert(message)});kukit.commandsGlobalRegistry.registerFromAction('alert',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('replaceInnerHTML', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');var node=oper.node;var insertedNodes;if(typeof(oper.parms.html)=='string'){node.innerHTML=oper.parms.html;insertedNodes=[];for(var i=0;i<node.childNodes.length;i++){insertedNodes.push(node.childNodes[i])}} else{oper.parms.html=kukit.dom.forceToDom(oper.parms.html);kukit.dom.clearChildNodes(node);insertedNodes=kukit.dom.appendChildren(oper.parms.html.childNodes,node)}
if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('replaceInnerHTML',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('replaceHTML', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');var node=oper.node;oper.parms.html=kukit.dom.forceToDom(oper.parms.html);var elements=oper.parms.html.childNodes;var length=elements.length;if(length>0){var parentNode=node.parentNode;var insertedNodes=[];var next=elements[length-1];parentNode.replaceChild(next,node);insertedNodes.push(next);for(var i=length-2;i>=0;i--){var inserted=parentNode.insertBefore(elements[i],next);insertedNodes.push(inserted);next=inserted}
if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}}});kukit.commandsGlobalRegistry.registerFromAction('replaceHTML',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('setAttribute', function(oper){oper.evaluateParameters(['name','value'],{});if(oper.parms.name.toLowerCase()=='style'){throw kukit.E}
kukit.dom.setAttribute(oper.node,oper.parms.name,oper.parms.value)});kukit.commandsGlobalRegistry.registerFromAction('setAttribute',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('setKssAttribute', function(oper){oper.evaluateParameters(['name','value'],{});kukit.dom.setKssAttribute(oper.node,oper.parms.name,oper.parms.value)});kukit.commandsGlobalRegistry.registerFromAction('setKssAttribute',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('setStyle', function(oper){oper.evaluateParameters(['name','value'],{});oper.node.style[oper.parms.name]=oper.parms.value});kukit.commandsGlobalRegistry.registerFromAction('setStyle',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('addClass', function(oper){oper.evaluateParameters(['value'],{});addClassName(oper.node,oper.parms.value)});kukit.commandsGlobalRegistry.registerFromAction('addClass',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('removeClass', function(oper){oper.evaluateParameters(['value'],{});removeClassName(oper.node,oper.parms.value)});kukit.commandsGlobalRegistry.registerFromAction('removeClass',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAfter', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');oper.parms.html=kukit.dom.forceToDom(oper.parms.html);var content=oper.parms.html;var parentNode=oper.node.parentNode;var toNode=kukit.dom.getNextSiblingTag(oper.node);var insertedNodes;if(toNode==null){insertedNodes=kukit.dom.appendChildren(content.childNodes,parentNode)} else{insertedNodes=kukit.dom.insertBefore(content,parentNode,toNode)}
if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAfter',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLBefore', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');oper.parms.html=kukit.dom.forceToDom(oper.parms.html);var content=oper.parms.html;var toNode=oper.node;var parentNode=toNode.parentNode;var insertedNodes=kukit.dom.insertBefore(content,parentNode,toNode);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLBefore',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAsLastChild', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');oper.parms.html=kukit.dom.forceToDom(oper.parms.html);var insertedNodes=kukit.dom.appendChildren(oper.parms.html,oper.node);insertedNodes=kukit.dom.appendChildren(oper.parms.html.childNodes,oper.node);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAsLastChild',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAsFirstChild', function(oper){oper.evaluateParameters(['html'],{'withKssSetup':true});oper.evalBool('withKssSetup');oper.parms.html=kukit.dom.forceToDom(oper.parms.html);var content=oper.parms.html;var parentNode=oper.node;var toNode=parentNode.firstChild;var insertedNodes;if(toNode==null){insertedNodes=kukit.dom.appendChildren(content.childNodes,parentNode)} else{insertedNodes=kukit.dom.insertBefore(content,parentNode,toNode)}
if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAsFirstChild',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('deleteNodeAfter', function(oper){var parentNode=oper.node.parentNode;var toNode=kukit.dom.getNextSiblingTag(oper.node);if(toNode!=null){parentNode.removeChild(toNode)}});kukit.commandsGlobalRegistry.registerFromAction('deleteNodeAfter',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('deleteNodeBefore', function(oper){var parentNode=oper.node.parentNode;var toNode=kukit.dom.getPreviousSiblingTag(oper.node);parentNode.removeChild(toNode)});kukit.commandsGlobalRegistry.registerFromAction('deleteNodeBefore',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('deleteNode', function(oper){var parentNode=oper.node.parentNode;parentNode.removeChild(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('deleteNode',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('clearChildNodes', function(oper){oper.evaluateParameters([],{'none':false});kukit.dom.clearChildNodes(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('clearChildNodes',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('focus', function(oper){oper.evaluateParameters([],{'none':false});kukit.dom.focus(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('focus',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('moveNodeAfter', function(oper){var node=oper.node;var parentNode=node.parentNode;parentNode.removeChild(node);var toNode=document.getElementById(oper.parms.html_id);var nextNode=kukit.dom.getNextSiblingTag(toNode);if(nextNode==null){toNode.parentNode.appendChild(node)} else{parentNode.insertBefore(node,nextNode)}});kukit.commandsGlobalRegistry.registerFromAction('moveNodeAfter',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('moveNodeBefore', function(oper){var node=oper.node;var toNode=document.getElementById(oper.parms.html_id);var parentNode=toNode.parentNode;parentNode.insertBefore(node,toNode)});kukit.commandsGlobalRegistry.registerFromAction('moveNodeBefore',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('moveNodeAsLastChild', function(oper){var node=oper.node;var parentNode=document.getElementById(oper.parms.html_id);parentNode.appendChild(node)});kukit.commandsGlobalRegistry.registerFromAction('moveNodeAsLastChild',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('copyChildNodesFrom', function(oper){var fromNode=document.getElementById(oper.parms.html_id);Sarissa.copyChildNodes(fromNode,oper.node)});kukit.commandsGlobalRegistry.registerFromAction('copyChildNodesFrom',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('copyChildNodesTo', function(oper){toNode=document.getElementById(oper.parms.html_id);Sarissa.copyChildNodes(oper.node,toNode)});kukit.commandsGlobalRegistry.registerFromAction('copyChildNodesTo',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('setStateVar', function(oper){kukit.engine.stateVariables[oper.parms.varname]=oper.parms.value});kukit.commandsGlobalRegistry.registerFromAction('setStateVar',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('continueEvent', function(oper){oper.evaluateParameters(['name'],{'allnodes':'false'},'',true);oper.evalBool('allnodes','continueEvent');var parms=oper.parms;var binderInstance=oper.binderInstance;var allNodes=parms.allnodes;var actionParameters={};for(var key in parms){if(key!='name'&&key!='allnodes'){actionParameters[key]=parms[key]}}
if(parms.allnodes){binderInstance.__continueEvent_allNodes__(parms.name,actionParameters)} else{binderInstance.__continueEvent__(parms.name,oper.orignode,actionParameters)}});kukit.commandsGlobalRegistry.registerFromAction('continueEvent',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('executeCommand', function(oper){oper.evaluateParameters(['name','selector'],{'selectorType':null},'',true);var parms=oper.parms;var actionParameters={};for(var key in parms){if(key!='name'&&key!='selector'&&key!='selectorType'){actionParameters[key]=parms[key]}}
var command=new kukit.cr.makeCommand(parms.selector,parms.name,parms.selectorType,actionParameters);command.execute(oper)});kukit.actionsGlobalRegistry.register('toggleClass', function(oper){kukit.actionsGlobalRegistry.BBB_classParms(oper);var node=oper.node;var className=oper.parms.value;var nodeclass=kukit.dom.getAttribute(node,'class');var classFoundAtIndex=-1;var parts=nodeclass.split(' ');for(var i=0;i<parts.length;i++){if(parts[i]==className){classFoundAtIndex=i}}
if(classFoundAtIndex==-1){parts.push(className)} else{parts.splice(classFoundAtIndex,1)}
kukit.dom.setAttribute(node,'class',parts.join(' '))});kukit.commandsGlobalRegistry.registerFromAction('toggleClass',kukit.cr.makeSelectorCommand);kukit.commandsGlobalRegistry.registerFromAction('replaceInnerHTML',kukit.cr.makeSelectorCommand,'setHtmlAsChild');kukit.commandsGlobalRegistry.registerFromAction('replaceHTML',kukit.cr.makeSelectorCommand,'replaceNode');kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAfter',kukit.cr.makeSelectorCommand,'addAfter');kukit.commandsGlobalRegistry.registerFromAction('deleteNodeAfter',kukit.cr.makeSelectorCommand,'removeNextSibling');kukit.commandsGlobalRegistry.registerFromAction('deleteNodeBefore',kukit.cr.makeSelectorCommand,'removePreviousSibling');kukit.commandsGlobalRegistry.registerFromAction('deleteNode',kukit.cr.makeSelectorCommand,'removeNode');kukit.commandsGlobalRegistry.registerFromAction('clearChildNodes',kukit.cr.makeSelectorCommand,'clearChildren');kukit.commandsGlobalRegistry.registerFromAction('copyChildNodesFrom',kukit.cr.makeSelectorCommand,'copyChildrenFrom');kukit.commandsGlobalRegistry.registerFromAction('copyChildNodesTo',kukit.cr.makeSelectorCommand,'copyChildrenTo');kukit.commandsGlobalRegistry.registerFromAction('setStateVar',kukit.cr.makeGlobalCommand,'setStatevar');kukit.actionsGlobalRegistry.register('addClassName', function(oper){kukit.actionsGlobalRegistry.BBB_classParms(oper);kukit.actionsGlobalRegistry.get('addClass')(oper)});kukit.commandsGlobalRegistry.registerFromAction('addClassName',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('removeClassName', function(oper){kukit.actionsGlobalRegistry.BBB_classParms(oper);kukit.actionsGlobalRegistry.get('removeClass')(oper)});kukit.commandsGlobalRegistry.registerFromAction('removeClassName',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.BBB_classParms=function(oper){var old;var has_old;if(typeof(oper.parms.className)!='undefined'){old=oper.parms.className;has_old=true}
if(typeof(oper.parms.name)!='undefined'){old=oper.parms.name;has_old=true}
if(has_old){if(typeof(oper.parms.value)=='undefined'){oper.parms={value:old}} else{oper.parms={}}}};kukit.plone={};if(typeof(addDOMLoadEvent)!='undefined'){var f=function(){kukit.log('KSS started by Plone DOMLoad event.');kukit.bootstrapFromDOMLoad()};addDOMLoadEvent(f)} else{}
kukit.actionsGlobalRegistry.register("plone-initKupu", function(oper){kukit.logDebug('Enter plone-initKupu');oper.evaluateParameters([],{},'plone-initKupu action');if(oper.node.tagName.toLowerCase()!='iframe'){throw kukit.E}
var divnode=oper.node.parentNode.parentNode.parentNode.parentNode;var id=divnode.id;if(!id){throw kukit.E}
var prefix='#'+id+' ';var textarea=getFromSelector(prefix+'textarea.kupu-editor-textarea');kukit.fo.fieldUpdateRegistry.register(textarea,{editor:null,node:textarea,doInit: function(){kukit.log('Setup Kupu initialization on load event.');var self=this;initKupuOnLoad=function(){kukit.log('Initialize Kupu from onload event.');self.editor=initPloneKupu(id)};this.editor=initPloneKupu(id);registerEventListener(window,"load",initKupuOnLoad)},doUpdate: function(){this.editor.saveDataToField(this.node.form,this.node);this.editor._initialized=true}});kukit.logDebug('plone-initKupu action done.')});kukit.commandsGlobalRegistry.registerFromAction('plone-initKupu',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-followLink", function(oper){oper.evaluateParameters([],{},'plone-followLink action');var url=oper.node.href;if(url.substr(0,7)=="http://"){window.location.replace(url)} else if(url.substr(0,13)=="javascript://"){eval(url.substr(13))}});kukit.commandsGlobalRegistry.registerFromAction('plone-followLink',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-submitCurrentForm", function(oper){oper.evaluateParameters([],{},'plone-submitCurrentForm action');window.onbeforeunload=null;var form=new kukit.fo.CurrentFormLocator(oper.node).getForm();form.submit()});kukit.commandsGlobalRegistry.registerFromAction('plone-submitCurrentForm',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initFormTabs", function(oper){oper.evaluateParameters([],{},'plone-initFormTabs action');if(oper.node.tagName.toLowerCase()!='form'){throw kukit.E}
var form=oper.node;ploneFormTabbing.initializeForm(form)});kukit.commandsGlobalRegistry.registerFromAction('plone-initFormTabs',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initFormProtection", function(oper){oper.evaluateParameters([],{},'plone-initFormProtection action');if(oper.node.tagName.toLowerCase()!='form'){throw kukit.E}
var form=oper.node;if(!window.onbeforeunload){window.onbeforeunload=new BeforeUnloadHandler().execute}
var tool=window.onbeforeunload.tool;tool.addForm(form)});kukit.commandsGlobalRegistry.registerFromAction('plone-initFormProtection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-formProtectionCheck",
function(oper){oper.evaluateParameters([],{},'plone-formProtectionCheck action');var binderInfo=kukit.engine.binderInfoRegistry.getSingletonBinderInfoByName('plone','formProtectionChecked');var binderInstance=binderInfo.getBinderInstance();var message;if(window.onbeforeunload){var tool=window.onbeforeunload.tool;message=tool.execute()}
var result=true;if(message){var confirmMsg='Are you sure you want to navigate away from this';confirmMsg+=' page?\n\n'+message+'\n\nPress OK to continue,';confirmMsg+=' or Cancel to stay on the current page.';result=confirm(confirmMsg)}
if(result){var action='formProtectionChecked'} else{var action='formProtectionFailed'}
binderInstance.__continueEvent__(action,oper.node,{})});kukit.commandsGlobalRegistry.registerFromAction('plone-formProtectionCheck',kukit.cr.makeSelectorCommand);kukit.plone.FormProtectionCheckedEvents=function(){};kukit.plone.FormProtectionCheckedEvents.prototype.__default_failed__=function(name,oper){};kukit.eventsGlobalRegistry.register('plone','formProtectionChecked',kukit.plone.FormProtectionCheckedEvents,null,null);kukit.eventsGlobalRegistry.register('plone','formProtectionFailed',kukit.plone.FormProtectionCheckedEvents,null,'__default_failed__');kukit.actionsGlobalRegistry.register("plone-initLockingProtection",
function(oper){oper.evaluateParameters([],{},'plone-initLockingProtection action');if(oper.node.tagName.toLowerCase()!='form'){throw kukit.E}
if(!window.onunload){var handler=new plone.UnlockHandler().execute;window.onunload=handler}});kukit.commandsGlobalRegistry.registerFromAction('plone-initLockingProtection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-removeLockProtection",
function(oper){oper.evaluateParameters([],{},'plone-removeLockProtection action');if(window.onunload){window.onunload=null}});kukit.commandsGlobalRegistry.registerFromAction('plone-removeLockProtection',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register("plone-initShiftDetection",
function(oper){oper.evaluateParameters([],{},'plone-initShiftDetection action');kukit.engine.stateVariables['plone-shiftdown']=false;document.onkeydown=function(e){var evt=e||window.event;if(evt.keyCode==16){kukit.engine.stateVariables['plone-shiftdown']=true}};document.onkeyup=function(e){var evt=e||window.event;if(evt.keyCode==16){kukit.engine.stateVariables['plone-shiftdown']=false}}});kukit.commandsGlobalRegistry.registerFromAction('plone-initShiftDetection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initCheckBoxSelection",
function(oper){oper.evaluateParameters([],{},'plone-initCheckBoxSelection action');kukit.engine.stateVariables['plone-foldercontents-firstcheckeditem']=null});kukit.commandsGlobalRegistry.registerFromAction('plone-initCheckBoxSelection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-createCheckBoxSelection",
function(oper){var actionMsg='plone-createCheckBoxSelection action';oper.evaluateParameters(['group'],{},actionMsg);var node=oper.node;var firstItemVarName='plone-foldercontents-firstcheckeditem';var firstItem=kukit.engine.stateVariables[firstItemVarName];if(firstItem&&kukit.engine.stateVariables['plone-shiftdown']){var group=oper.parms.group;var allNodes=kukit.dom.cssQuery(group);var start=null;var end=null;for(var i=0;i<allNodes.length;i++){if(allNodes[i]==firstItem){start=i}
else if(allNodes[i]==node){end=i}}
if(start>end){var temp=start;start=end;end=temp}
for(var i=start;i<=end;i++){allNodes[i].checked=firstItem.checked}}
else{kukit.engine.stateVariables[firstItemVarName]=node}});kukit.commandsGlobalRegistry.registerFromAction('plone-createCheckBoxSelection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initDragAndDrop",
function(oper){oper.evaluateParameters(['table'],{},'plone-initDragAndDrop action');var table=oper.parms.table;ploneDnDReorder.table=cssQuery(table)[0];if(!ploneDnDReorder.table)
return;ploneDnDReorder.rows=cssQuery(table+" > tr,"+table+" > tbody > tr");var targets=cssQuery(table+" > tr > td.draggable,"+table+" > tbody > tr > td.draggable");for(var i=0;i<targets.length;i++){if(hasClassName(targets[i],'notDraggable'))
continue;var target=targets[i];target.onmousedown=ploneDnDReorder.doDown;target.onmouseup=ploneDnDReorder.doUp;addClassName(target,"draggingHook");target.innerHTML='::'}});kukit.commandsGlobalRegistry.registerFromAction('plone-initDragAndDrop',kukit.cr.makeSelectorCommand);if(typeof(Effect)!="undefined"){kukit.HASEFFECTS=1} else{kukit.HASEFFECTS=0}
if(kukit.HASEFFECTS&&typeof(Effect.Transitions)!="undefined"){kukit.actionsGlobalRegistry.register("effect", function(oper){oper.evaluateParameters([],{'type':'fade'},'scriptaculous effect');var node=oper.node;if(oper.parms.type=='fade'){new Effect.Fade(node)} else if(oper.parms.type=='appear'){new Effect.Appear(node)} else if(oper.parms.type=='puff'){new Effect.Puff(node)} else if(oper.parms.type=='blinddown'){new Effect.BlindDown(node)} else if(oper.parms.type=='blindup'){new Effect.BlindUp(node)}});kukit.commandsGlobalRegistry.registerFromAction('effect',kukit.cr.makeSelectorCommand);this.$=function $(){var results=[],element;for(var i=0;i<arguments.length;i++){element=arguments[i];if(typeof element=='string')
element=document.getElementById(element);results.push(Element.extend(element))}
return results.length<2?results[0]:results}}
kukit.actionsGlobalRegistry.register("bindActionMenus", function(oper){initializeMenus();kukit.logDebug('Plone menus initialized')});kukit.log('Plone legacy [initializeMenus] action registered.');kukit.plonelegacy={};if(typeof(scanforlinks)=='undefined'){kukit.plonelegacy.bindExternalLinks=function(){}}
else{kukit.plonelegacy.bindExternalLinks=function(){scanforlinks()}}
kukit.actionsGlobalRegistry.register("bindExternalLinks", function(oper){kukit.plonelegacy.bindExternalLinks();kukit.logDebug('Plone external links bound.')});kukit.log('Plone legacy [bindExternalLinks] action registered.');kukit.actionsGlobalRegistry.register("initializeCollapsible", function(oper){activateCollapsibles()});kukit.log('Plone legacy [initializeCollapsible] action registered.');kukit.actionsGlobalRegistry.register("createTableOfContents", function(oper){createTableOfContents()});kukit.commandsGlobalRegistry.registerFromAction('createTableOfContents',kukit.cr.makeGlobalCommand);kukit.log('Plone [createTableOfContents] action registered.');


