
/* 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 -
 */

/* - ++resource++kukit-src.js - */
// http://www.zdginc.com/portal_javascripts/++resource++kukit-src.js?original=1
if(typeof(kukit)=='undefined'){var kukit={}}try{kukit.HAVE_SAFARI=navigator.vendor&&navigator.vendor.indexOf('Apple')!=-1;kukit.HAVE_IE=eval("_SARISSA_IS_IE")}catch(e){}kukit.showlog=function(){kukit.logWarning('Logging is on the console: request to show logging pane ignored')};kukit.hasFirebug=false;if(typeof kukit.log=='undefined'&&typeof console!='undefined'&&typeof console.log!='undefined'&&typeof console.debug!='undefined'&&typeof console.error!='undefined'&&typeof console.warn!='undefined'){kukit.log=console.log;kukit.logDebug=console.debug;kukit.logFatal=console.error;kukit.logError=console.error;kukit.logWarning=console.warn;kukit.hasFirebug=true}if(typeof kukit.log=='undefined'&&typeof MochiKit!='undefined'&&typeof MochiKit.Logging!='undefined'&&typeof MochiKit.Logging.log!='undefined'){kukit.log=MochiKit.Logging.log;kukit.logError=MochiKit.Logging.logError;kukit.logDebug=MochiKit.Logging.logDebug;kukit.logFatal=MochiKit.Logging.logFatal;kukit.logWarning=MochiKit.Logging.logWarning;kukit.showlog=function(){createLoggingPane(true)}}if(typeof kukit.log=='undefined'&&typeof console!='undefined'&&typeof console.log!='undefined'){kukit.log=function(str){console.log('INFO: '+str)};kukit.logError=function(str){console.log('ERROR: '+str)};kukit.logDebug=function(str){console.log('DEBUG: '+str)};kukit.logFatal=function(str){console.log('FATAL: '+str)};kukit.logWarning=function(str){console.log('WARNING: '+str)}}if(typeof kukit.log=='undefined'){kukit.log=function(str){};kukit.logError=kukit.log;kukit.logDebug=kukit.log;kukit.logFatal=kukit.log;kukit.logWarning=kukit.log}kukit.log('Initializing kss');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;while(i<this.elements.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}else{throw 'Bad boolean value "'+value+'" '+errname}return value};kukit.ut.evalInt=function(value,errname){try{value=parseInt(value)}catch(e){throw 'Bad integer value "'+value+'" '+errname}return value};kukit.ut.evalList=function(value,errname){try{value=value.replace(/^ +/,'');value=value.replace(/ +$/,'');value=value.split(/ *, */)}catch(e){throw 'Bad list value "'+value+'" '+errname}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 'Timer already started.'}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.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}kukit.log('Starting '+item.remark);var ts_start=(new Date()).valueOf();try{item.func()}catch(e){this.lock=false;throw(e)}var ts_end=(new Date()).valueOf();kukit.log('Finished '+item.remark+' in '+(ts_end-ts_start)+' ms')}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.ExplicitError=kukit.err.exceptionFactory('ExplicitError');kukit.err.ExplicitError.prototype.__superinit__=kukit.err.ExplicitError.prototype.__init__;kukit.err.ExplicitError.prototype.__init__=function(name,errorcommand){var message='Explicit error';var kw=this.__superinit__(name,message);kw.errorcommand=errorcommand;return kw};kukit.err.ResponseParsingError=kukit.err.exceptionFactory('ResponseParsingError');kukit.err.CommandExecutionError=kukit.err.exceptionFactory('CommandExecutionError');kukit.err.CommandExecutionError.prototype.__superinit__=kukit.err.CommandExecutionError.prototype.__init__;kukit.err.CommandExecutionError.prototype.__init__=function(name,e,command){var kw=this.__superinit__(name,'');kw.message='Command "'+command.name+'": '+e.toString();return kw};kukit.err.rd={};kukit.err.rd.RuleMergeError=kukit.err.exceptionFactory('RuleMergeError');kukit.err.rd.KssSelectorError=kukit.err.exceptionFactory('KssSelectorError');kukit.err.rd.EventBindError=kukit.err.exceptionFactory('EventBindError');kukit.err.rd.EventBindError.prototype.__superinit__=kukit.err.rd.EventBindError.prototype.__init__;kukit.err.rd.EventBindError.prototype.__init__=function(name,message,eventname,eventnamespace){var kw=this.__superinit__(name,message);kw.eventname=eventname;kw.eventnamespace=eventnamespace;kw.message=kw.message+' when binding event name "'+eventname+'" on namespace "'+eventnamespace+'"';return kw};kukit.err.tk={};kukit.err.tk.ParsingError=kukit.err.exceptionFactory('ParsingError');kukit.err.tk.ParsingError.prototype.__superinit__=kukit.err.tk.ParsingError.prototype.__init__;kukit.err.tk.ParsingError.prototype.__init__=function(name,message,cursor){var kw=this.__superinit__(name,message);if(cursor){kw.errpos=cursor.pos;kw.errrow=cursor.row;kw.errcol=cursor.col;kw.message=kw.message+' at row '+kw.errrow+', column '+kw.errcol}else{kw.errpos=null;kw.errrow=null;kw.errcol=null}return kw};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){if(restricted&&(key=='node'||key=='parms'||key=='eventrule'||key=='binderinstance'||key=='orignode')){throw 'Illegal update on oper object, protected attribute "'+key+'"'}var value=dict[key];if(typeof(value)!='function'){this[key]=value}}};kukit.op.Oper.prototype.logDebug=function(){var result=[];for(var key in this){if(key=='parms'){var res2=[];for(var k2 in this.parms){res2.push(k2+'="'+this.parms[k2]+'"')}result.push('parms={'+res2.join(',')+'}')}else if(typeof(kukit.op.Oper.prototype[key])=='undefined'){result.push(key+'='+this[key])}}kukit.logDebug('Oper contents: '+result.join(', '))};kukit.op.Oper.prototype.executeClientAction=function(name){var nodes=null;for(key in this.aparms){switch(key){case 'kssSelector':{nodes=this.aparms[key]}break;default:{throw 'No kss parameter "'+key+'" allowed in action-client. (Normal parameters cannot start with kss.)'}break}}var nodetext=function(node){if(node){return node.tagName.toLowerCase()}else{return 'DOCUMENT'}};var executeActions=kukit.actionsGlobalRegistry.get(name);if(nodes!=null){kukit.logDebug('action Selector type selected nodes:'+nodes.length);if(!nodes||nodes.length==0){kukit.logWarning('action Selector found no nodes')}for(var i=0;i<nodes.length;i++){this.node=nodes[i];kukit.logDebug('action Name: '+name+' executing on target ('+(i+1)+'/'+nodes.length+'): '+nodetext(this.node));executeActions(this)}}else{kukit.logDebug('action Name: '+name+' executing on single target '+nodetext(this.node));executeActions(this)}};kukit.op.Oper.prototype.executeDefaultAction=function(name,optional){for(key in this.aparms){throw 'No kss parameter "'+key+'" allowed in action-default. (Normal parameters cannot start with kss.)'}var namespace=this.binderinstance.__event_namespace__;var methodname=kukit.eventsGlobalRegistry.get(namespace,name).defaultactionmethodname;var success=false;if(!methodname){if(!optional){throw 'Could not trigger event name "'+name+'" on namespace "'+namespace+'", because this event has no default method.'}}else{this.binderinstance._10(namespace,name,this,methodname);success=true}return success};kukit.op.Oper.prototype.executeServerAction=function(name){for(key in this.aparms){switch(key){case 'kssUrl':{}break;case 'kssSubmitForm':{}break;default:{throw 'No kss parameter "'+key+'" allowed in action-server. (Normal parameters cannot start with kss.)'}break}}var sa=new kukit.sa.ServerAction(name,this)};kukit.op.Oper.prototype.getEventName=function(){return this.eventrule.kss_selector.name};kukit.op.Oper.prototype.getEventNamespace=function(){return this.eventrule.kss_selector.namespace};kukit.op.Oper.prototype.makeExecuteActionsHook=function(){var eventname=this.getEventName();var self=this;var func_to_bind=function(dict){var newoper=self.clone(dict,true);newoper.binderinstance._1(eventname,newoper)};return func_to_bind};kukit.op.Oper.prototype.completeParms=function(mandatory,defaults,errname,allow_excess){if(typeof(allow_excess)=='undefined'){allow_excess=false}var newparms={};for(var i=0;i<mandatory.length;i++){var next=mandatory[i];if(typeof(this.parms[next])=='undefined'){throw 'Missing mandatory parameter "'+next+'" in '+errname}newparms[next]=this.parms[next]}for(var key in defaults){var val=this.parms[key];if(typeof(val)=='undefined'){newparms[key]=defaults[key]}else{newparms[key]=val}}for(var key in this.parms){if(typeof(newparms[key])=='undefined'){if(allow_excess){newparms[key]=this.parms[key]}else{throw 'Excess parameter "'+key+'" in '+errname}}}this.parms=newparms};kukit.op.Oper.prototype.evalBool=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalBool(value,'for key "'+key+'" in '+errname)};kukit.op.Oper.prototype.evalInt=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalInt(value,'for key "'+key+'" in '+errname)};kukit.op.Oper.prototype.evalList=function(key,errname){var value=this.parms[key];this.parms[key]=kukit.ut.evalList(value,'for key "'+key+'" in '+errname)};kukit.Engine=function(){this.baseUrl=this.calculateBase();this.documentRules=new kukit.rd.MethodTable();this._2={};this._2['kss']=kukit.kssp.KssRuleProcessor;this._11=new Array();this.rules=new Array();this.bindScheduler=new kukit.ut.SerializeScheduler();this.statevars={};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 _19=document;_19=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'}results[results.length]=new kukit.RuleSheetLink(nodes[i].href,res_type)}}return results};kukit.isKineticStylesheet=function(node){var rel=node.rel;if(rel=="kinetic-stylesheet"){return true}if(rel=="kukit"||rel=="k-stylesheet"){kukit.logWarning(node.href+': rel "'+rel+'" is deprecated; use "kinetic-stylesheet" instead.');return true}return false};kukit.Engine.prototype.setupEvents=function(in_nodes){if(this.setupEventsInProgress){this.setupEventsQueue=this.setupEventsQueue.concat(in_nodes)}else{this.doSetupEvents(in_nodes)}};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(in_nodes){var self=this;var deferred_setup_events=function(){self._16(in_nodes)};var targetmsg;var found=false;if(!in_nodes){targetmsg='document';found=true}else{targetmsg='node subtrees ';for(var i=0;i<in_nodes.length;i++){var node=in_nodes[i];if(node.nodeType==1){if(!found){found=true}else{targetmsg+=', '}targetmsg+=node.tagName.toLowerCase()}}}if(found){this.bindScheduler.addPre(deferred_setup_events,'setting up events for '+targetmsg)}};kukit.Engine.prototype._16=function(in_nodes){var phase;if(typeof(in_nodes)=='undefined'){phase=1}else{phase=2}this.binderInfoRegistry.startBindingPhase();var rules=this.rules;var ruletable=new kukit.rd.RuleTable(this.loadScheduler);for(var y=0;y<rules.length;y++){rules[y].mergeForSelectedNodes(ruletable,phase,in_nodes)}if(phase==1){this.documentRules.bindall(phase)}ruletable.bindall(phase);this.binderInfoRegistry.processBindingEvents()};kukit.Engine.prototype.initializeRules=function(){if(window.kukitRulesInitializing||window.kukitRulesInitialized){kukit.log('Subsequent call to initializeRules is ignored !');return}kukit.engine=this;window.kukitRulesInitializing=true;var rulelinks=this.getRuleSheetLinks();kukit.log("Count of KSS links: "+rulelinks.length);for(var i=0;i<rulelinks.length;i++){var rulelink=rulelinks[i];var ruleProcessorClass=this._2[rulelink.res_type];if(ruleProcessorClass){kukit.log("Start loading and processing "+rulelink.href+" resource type "+rulelink.res_type);var ruleprocessor=new ruleProcessorClass(rulelink.href);var ts_start=(new Date()).valueOf();ruleprocessor.load();var ts_loaded=(new Date()).valueOf();try{ruleprocessor.parse()}catch(e){if(e.name=='ParsingError'){var msg='Error parsing '+rulelink.res_type+' at '+rulelink.href+' : '+e.toString();kukit.logFatal(msg);throw msg}else{throw e}}var ts_end=(new Date()).valueOf();kukit.log("Finished loading and processing "+rulelink.href+" resource type "+rulelink.res_type+' in '+(ts_loaded-ts_start)+' + '+(ts_end-ts_loaded)+' ms');this._11[this._11.length]=ruleprocessor}else{kukit.logError("Ignoring rulesheet "+rulelink.href+' of type '+rulelink.res_type)}}try{this.setupEvents()}catch(e){if(e.name=='RuleMergeError'||e.name=='EventBindError'){var msg='Error setting up events: '+e.toString();kukit.logFatal(msg);throw msg}else{throw e}}window.kukitRulesInitializing=false;window.kukitRulesInitialized=true};kukit.initializeRules=function(){kukit.logWarning('Deprecated kukit.initializeRules, use kukit.bootstrap instead!');kukit.bootstrap()};kukit.RuleSheetLink=function(href,res_type){this.href=href;this.res_type=res_type};kukit.bootstrap=function(){var engine=new kukit.Engine();kukit.log('bootstrap');engine.initializeRules()};kukit.bootstrapFromDOMLoad=function(){var engine=new kukit.Engine();engine.initializedOnDOMLoad=true;kukit.log('bootstrap from DOMLoad');engine.initializeRules()};if(typeof(window)!='undefined'){kukit.ut.registerEventListener(window,"load",kukit.bootstrap)}kukit.tk={};kukit.tk._6=function(){};kukit.tk._6.prototype.emitError=function(txt){throw new kukit.err.tk.ParsingError(txt,this.src.makeMarker(this.startpos))};kukit.tk._6.prototype.setSrcStatus=function(eofOk){if(!this.finished&&this.src.text.length==this.src.pos){if(eofOk){this.finished=true}else{this.emitError('Unexpected EOF')}}};kukit.tk._0=function(){};kukit.tk._0.prototype=new kukit.tk._6;kukit.tk._0.prototype.emitAndReturn=function(token){this.finished=true;return token};kukit.tk._0.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._0.prototype.process=function(){this.txt='';for(var i=0;i<this.result.length;i++){this.txt+=this.result[i].txt}};kukit.tk._0.prototype.expectToken=function(cursor,token){var i=cursor.next;if(token){var symbol=token.prototype.symbol;if(i>=this.result.length){this.emitError('Expected ['+symbol+']')}else if(this.result[i].symbol!=symbol){this.emitError('Expected ['+symbol+'], found ['+this.result[i].symbol+']')}}else{if(i>=this.result.length){this.emitError('Expected token')}}cursor.token=this.result[i];cursor.next+=1};kukit.tk._0.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._0.prototype.digestTxt=function(cursor,token1,token2,token3,token4){this.digestExactTxt(cursor,token1,token2,token3,token4);cursor.txt=this.dewhitespaceAndTrim(cursor.txt)};kukit.tk._0.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._0.prototype.dewhitespace=function(txt){if(txt!=' '){txt=txt.replace(/[\r\n\t ]+/g,' ')}return txt};kukit.tk._0.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('Expected "'+txt+'", found "'+src.text.substr(src.pos,txt.length)+'"')}else{src.pos+=txt.length;this.finished=true}this.endpos=src.pos};f.prototype=new kukit.tk._6;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._0;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.ParamProviderRegistry=function(){this.content={}};kukit.pr.ParamProviderRegistry.prototype.register=function(name,func){if(typeof(func)=='undefined'){throw 'func argument is mandatory when registering a parameter provider (ParamProviderRegistry.register).'}if(this.content[name]){kukit.logError('Error : parameter provider "'+name+'" already registered.');return}this.content[name]=func};kukit.pr.ParamProviderRegistry.prototype.exists=function(name){var entry=this.content[name];return(typeof(entry)!='undefined')};kukit.pr.ParamProviderRegistry.prototype.get=function(name){var func=this.content[name];if(!func){if(name==''){return kukit.pr.IdentityPP}else{throw 'Error : undefined parameter provider "'+name+'"'}}return func};kukit.pprovidersGlobalRegistry=new kukit.pr.ParamProviderRegistry();kukit.pr.IdentityPP=function(){};kukit.pr.IdentityPP.prototype={check:function(args){if(args.length!=1){throw 'internal error, IdentityPP needs 1 argument'}},eval:function(args,node){return args[0]}};kukit.pprovidersGlobalRegistry.register('',kukit.pr.IdentityPP);kukit.pr.FormVarPP=function(){};kukit.pr.FormVarPP.prototype={check:function(args){if(args.length!=2){throw 'formVar method needs 2 arguments (formname, varname)'}},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){if(args.length!=0&&args.length!=1){throw 'currentFormVar method needs 0 or 1 argument (varname)'}},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){if(args.length!=1&&args.length!=2){throw 'currentFormVarFromKssAttr method needs 1 or 2 argument (attrname, [recurseParents])'}},eval:function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){kukit.ut.evalBool(args[1],'2nd attribute of currentFormVarForKssAttr must be a boolean');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){if(args.length!=1){throw 'form method needs 1 arguments (formname)'}kukit.logWarning('Deprecated the form(formname) parameter provider, use xxx-kssSubmitForm: form(formname) instead!')},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){if(args.length!=0){throw 'currentForm method needs no argument'}kukit.logWarning('Deprecated the currentForm() parameter provider, use xxx-kssSubmitForm: currentForm() instead!')},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){if(args.length!=1&&args.length!=2){throw 'nodeAttr method needs 1 or 2 argument (attrname, [recurseParents])'}if(args[0].toLowerCase()=='style'){throw 'nodeAttr method does not accept "style" as attrname'}if(args[0].match(/[ ]/)){throw 'attrname parameter in nodeAttr method cannot contain space.'}},eval:function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){recurseParents=args[1];kukit.ut.evalBool(recurseParents,'2nd attribute of nodeAttr must be a boolean')}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){if(args.length!=1&&args.length!=2){throw 'kssAttr method needs 1 or 2 argument (attrname, [recurseParents])'}if(args[0].match(/[ -]/)){throw 'attrname parameter in kssAttr method cannot contain "-" or space.'}},eval:function(args,node){var argname=args[0];var recurseParents=false;if(args.length==2){recurseParents=args[1];kukit.ut.evalBool(recurseParents,'2nd attribute of kssAttr must be a boolean')}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){if(args.length!=0&&args.length!=1){throw 'nodeContent method needs 0 or 1 argument (recursive)'}},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){if(args.length!=1){throw 'stateVar method needs 1 argument (varname)'}},eval:function(args,node){var key=args[0];var value=kukit.engine.statevars[key];if(typeof(value)=='undefined'){throw 'Nonexistent statevar "'+key+'"'}return value}};kukit.pprovidersGlobalRegistry.register('stateVar',kukit.pr.StateVarPP);kukit.pr.PassPP=function(){};kukit.pr.PassPP.prototype={check:function(args){if(args.length!=1){throw 'pass method needs 1 argument (attrname)'}},eval:function(args,node,defaultparms){var key=args[0];var value=defaultparms[key];if(typeof(value)=='undefined'){throw 'Nonexistent default parm "'+key+'"'}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'}if(name.indexOf('@')!=-1)throw new kukit.err.rd.KssSelectorError('Kss selector name must not contain @: "'+name+'"');if(id&&id.indexOf('@')!=-1)throw new kukit.err.rd.KssSelectorError('Kss selector id must not contain @: "'+id+'"');if(namespace&&namespace.indexOf('@')!=-1)throw new kukit.err.rd.KssSelectorError('Kss selector namespace must not contain @: "'+namespace+'"');if(!isEvent){if(css!='document'&&css!='behaviour'){throw new kukit.err.rd.KssSelectorError('KssSpecialSelector "'+name+'" must have one of the allowed names')}}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,defaultparms){parms[key]=this.pprovider.eval([this.txt],node,defaultparms)};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();this.pprovider.check(this.args)};kukit.rd.KssMethodValue.prototype.evaluate=function(parms,key,node,defaultparms){parms[key]=this.pprovider.eval(this.args,node,defaultparms)};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(kss_selector,parms,actions){if(typeof(parms)=='undefined'){this.kss_selector=kss_selector}else{this.nr=kukit.rd.EventRuleNr;this.mergednr=null;kukit.rd.EventRuleNr=this.nr+1;var namestr;if(kss_selector.namespace){namestr=kss_selector.namespace+'-'+kss_selector.name}else{namestr=kss_selector.name}kukit.logDebug("EventRule #"+this.getNr()+": "+kss_selector.css+' EVENT='+namestr);this.kss_selector=kss_selector;this.parms=parms;this.actions=actions}};kukit.rd.EventRule.prototype.getNr=function(){if(this.mergednr){return this.mergednr}else{return this.nr}};kukit.rd.EventRule.prototype.mergeForSelectedNodes=function(ruletable,phase,in_nodes){if(this.kss_selector.isEventSelector){var nodes=kukit.dom.cssQuery(this.kss_selector.css,in_nodes);var counter=0;for(var y=0;y<nodes.length;y++){var node=nodes[y];if(typeof(node._12)=='undefined'){ruletable.add(node,this);counter+=1}}if(counter>0){kukit.logDebug('EventRule #'+this.getNr()+' mergeid '+this.kss_selector.mergeid+' selected '+counter+' nodes')}}else if(typeof(in_nodes)=='undefined'){kukit.engine.documentRules.add(this)}};kukit.rd.EventRule.prototype.getBinderInfo=function(){return kukit.engine.binderInfoRegistry.getOrCreateBinderInfo(this.kss_selector.id,this.kss_selector.classname,this.kss_selector.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.isMerged=function(){return(this.mergednr!=null)};kukit.rd.EventRule.prototype.cloneForMerge=function(){var merged=new kukit.rd.EventRule(this.kss_selector);merged.actions=new kukit.rd.ActionSet();merged.parms={};merged.mergednr='X';merged.merge(this);merged.mergednr=this.getNr();return merged};kukit.rd.EventRule.prototype.merge=function(other){if(!this.isMerged()){throw "Cannot merge into a genuine event rule"}if(this.kss_selector.isEventSelector){if(this.kss_selector.id!=other.kss_selector.id){throw "Differing kss selector ids in event rule merge"}if(this.kss_selector.classname!=other.kss_selector.classname){throw "Differing kss selector classes in event rule merge"}}if(this.kss_selector.name!=other.kss_selector.name){throw "Differing kss selector names in event rule merge"}this.mergednr=this.mergednr+','+other.getNr();for(var key in other.parms){this.parms[key]=other.parms[key]}this.actions.merge(other.actions);if(this.mergednr.substr(0,1)!='X')kukit.logDebug('Merged rule '+this.mergednr+' mergeid '+this.kss_selector.mergeid)};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.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 new kukit.err.rd.RuleMergeError('Cannot action-delete unexisting action, "'+key+'"')}}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.kss_selector.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];if(typeof(action)=='undefined'){throw('Action "'+name+'" does not exist and cannot be deleted.')}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){if(this.name!=null&&this.name!=name){throw new kukit.err.rd.RuleMergeError('Error overriding action name "'+this.name+'" to "'+name+'" (Unmatching action names at merge?)')}this.name=name;if(name=='default'){if(this.type!=null&&this.type!='D'){throw new kukit.err.rd.RuleMergeError('Error setting action to default on action "'+this.name+'", current type "'+this.type+'"')}this.setType('D')}};kukit.rd.Action.prototype.setType=function(type){if((type!='S'&&type!='C'&&type!='E'&&type!='X')||(this.type!=null&&this.type!=type)){throw new kukit.err.rd.RuleMergeError('Error setting action type on action "'+this.name+'" from "'+this.type+'" to "'+type+'" (Attempt to merge client, server or error actions?)')}if(this.error!=null&&this.type!='S'){throw new kukit.err.rd.RuleMergeError('Error setting action error handler on action "'+this.name+'", this is only allowed on server actions.')}this.type=type};kukit.rd.Action.prototype.setError=function(error){if(this.type!=null&&this.type!='S'){throw new kukit.err.rd.RuleMergeError('Error setting action error handler on action "'+this.name+'", this is only allowed on server actions.')}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,defaultparms){var parms={};var aparms={};if(typeof(defaultparms)=='undefined'){defaultparms={}}for(var key in this.parms){var kssvalue=this.parms[key];if(key.match(/^kss/)){kssvalue.evaluate(aparms,key,oper.node,defaultparms)}else{kssvalue.evaluate(parms,key,oper.node,defaultparms)}}var aoper=oper.clone({'parms':parms,'aparms':aparms,'action':this});return aoper};kukit.rd.Action.prototype.execute=function(oper){oper=this.makeActionOper(oper,oper.parms);switch(this.type){case 'D':{var name=oper.eventrule.kss_selector.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.kss_selector.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._12=phase;for(var id in nodeval.val){var eventrule=nodeval.val[id];eventrule.bind(nodeval.node)}counter+=1}kukit.logDebug('Binding to '+counter+' nodes in grand total');var loadactions=this.loadScheduler;if(!loadactions.empty()){kukit.logDebug('Start executing delayed load actions');var nr=loadactions.executeAll();kukit.logDebug('Executed '+nr+' load actions')}};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.kss_selector.css;var dict=this.content[category];if(typeof(dict)=='undefined'){throw 'Unknown method rule category "'+category+'"'}eventrule.mergeIntoDict(dict,eventrule.kss_selector.mergeid,eventrule)};kukit.rd.MethodTable.prototype.getMergedRule=function(category,name,binderinstance){var dict=this.content[category];if(typeof(dict)=='undefined'){throw 'Unknown method rule category "'+category+'"'}var namespace=binderinstance.__event_namespace__;var id=binderinstance.__binder_id__;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.logDebug('Binding '+counter+' special rules in grand total')};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','\\');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('kss param key evt-[<namespace>-]<name>-yyy must not have different [namespace and] name then the kss selector at the top of the rule, "'+key+'", and inside we have "'+block.evt_namespace+'-'+block.evt_name+'"')}}var eventRule=new kukit.rd.EventRule(parser.kssSelector,block.evt_parms,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.evt_parms={};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('-');if(splitkey.length<2||splitkey.length>4){this.emitError('kss param key must be like xxx-yyy or nnn-xxx-yyy or evt-xxx-yyy or evt-nnn-xxx-yyy"'+key+'"')}var name=splitkey[0];if(name=='evt'){if(splitkey.length<3){this.emitError('kss param key must be like xxx-yyy or nnn-xxx-yyy or evt-xxx-yyy or evt-nnn-xxx-yyy"'+key+'"')}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}else{if(ename!=this.evt_name||enamespace!=this.evt_namespace){this.emitError('kss param key evt-[<namespace>-]<name>-yyy must not have different [namespace and] name inside the same rule,"'+key+'", it must be "'+this.evt_namespace+'-'+this.evt_name+'"')}}if(value.isMethod!=false){this.emitError('evt-[nnn-]xxx-yyy: parameter producers are not allowed as value, key "'+key+'"')}this.evt_parms[ekey]=value.txt}else if(name=='action'){if(splitkey.length!=2){this.emitError('action-xxx must not have more "-" in it, key "'+key+'"')}if(value.isMethod!=false){this.emitError('action-xxx: parameter producers are not allowed as value, key "'+key+'"')}var atab={'server':'S','client':'C','cancel':'X'};var actionType=atab[splitkey[1]];if(!actionType){this.emitError('action-xxx: key must be action-server or action-client or action-cancel, key "'+key+'"')}var splitvalue=value.txt.split('-');if(splitvalue.length>2){this.emitError('action-xxx: value must be <ACTIONNAME> or <NAMESPACE>-<ACTIONNAME>, key "'+key+'"')}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':{if(value.isMethod!=false){this.emitError('xxx-error: parameter producers are not allowed as value, key "'+key+'"')}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){throw new kukit.err.tk.ParsingError('Error in value: '+e,this.src.makeMarker(this.startpos))}}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('Excess characters before the string in property value')}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('Method property value must have a one-word method name')}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('Property value must be one word')}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('Excess characters after the property value')}}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))',"\\":'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))',"\\":'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('Missing character after backslash')}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('Argument value must be one word or a string')}}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('Kss event selector must end with an event qualifier :event or :event(id)')}}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('Kss event selector must end with an event qualifier :event or :event(id)')}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('In kss event selector no space can be before the colon')}if(!pseudotoken.value.methodname){this.emitError('Kss event selector must have a one-word name after the colon')}if(pseudotoken.value.args.length>1){this.emitError('Kss pseudo value must not have more then one parameters')}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('Kss event selector must be name or namespace-name but no more dashes, "'+name+'"')}else if(splitname.length==2){name=splitname[1];namespace=splitname[0]}try{this.kssSelector=new kukit.rd.KssSelector(isEvent,css,name,namespace,id)}catch(e){if(e.name=='KssSelectorError'){this.emitError(e.toString())}else{throw e}}this.txt='';this.result=[]};kukit.kssp.KssRuleProcessor=function(href){this.href=href;this.loaded=false};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];try{rule.kss_selector.setIdAndClass()}catch(e){throw new kukit.err.tk.ParsingError('Undefined event name="'+rule.kss_selector.name+'", namespace="'+rule.kss_selector.namespace+'"')}kukit.engine.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 'func argument is mandatory when registering an event binder (EventRegistry.registerBinder).'}if(this.classes[classname]){kukit.logError('Error : event class "'+classname+'" already registered.');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 'Error : undefined event setup type '+classname}return func};kukit.er.EventRegistry.prototype._14=function(namespace,eventname,klass,bindmethodname,defaultactionmethodname,bindmethodapi){if(typeof(defaultactionmethodname)=='undefined'){throw 'some arguments are not passed when calling EventRegistry.register'}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 'eventname argument cannot be empty when registering an event (EventRegistry.register)'}var key=this._13(namespace,eventname);var entry=this.content[key];if(typeof(entry)!='undefined'){if(key[0]=='-'){key=key.substring(1)}throw 'In EventRegistry.register double registration of key "'+key+'"'}this.content[key]={'classname':classname,'bindmethodname':bindmethodname,'defaultactionmethodname':defaultactionmethodname,'bindmethodapi':bindmethodapi}};kukit.er.EventRegistry.prototype._4=function(namespace,names){this.eventsets.push({'namespace':namespace,'names':names})};kukit.er.EventRegistry.prototype.register=function(namespace,eventname,klass,bindmethodname,defaultactionmethodname){this._14(namespace,eventname,klass,bindmethodname,defaultactionmethodname,'old');this._4(namespace,[eventname])};kukit.er.EventRegistry.prototype.registerForAllEvents=function(namespace,eventnames,klass,bindmethodname,defaultactionmethodname){if(typeof(eventnames)=='string'){eventnames=[eventnames]}for(var i=0;i<eventnames.length;i++){var eventname=eventnames[i];this._14(namespace,eventname,klass,bindmethodname,defaultactionmethodname,'new')}this._4(namespace,eventnames)};kukit.er.EventRegistry.prototype._13=function(namespace,eventname){if(namespace==null){namespace=''}else if(namespace.split('-')>1){throw 'In EventRegistry.register namespace cannot contain -'}return namespace+'-'+eventname};kukit.er.EventRegistry.prototype.exists=function(namespace,eventname){var key=this._13(namespace,eventname);var entry=this.content[key];return(typeof(entry)!='undefined')};kukit.er.EventRegistry.prototype.get=function(namespace,eventname){var key=this._13(namespace,eventname);var entry=this.content[key];if(typeof(entry)=='undefined'){if(key[0]=='-'){key=key.substring(1);throw 'Error : undefined global event key '+key+' (or maybe namespace is missing?)'}else{throw 'Error : undefined event key '+key}}return entry};kukit.eventsGlobalRegistry=new kukit.er.EventRegistry();kukit.er.eventRegistry={};kukit.er.eventRegistry.register=function(namespace,eventname,klass,bindmethodname,defaultactionmethodname){kukit.logWarning('Deprecated kukit.er.eventRegistry.register, use kukit.eventsGlobalRegistry.register instead! ('+namespace+'-'+eventname+')');kukit.eventsGlobalRegistry.register(namespace,eventname,klass,bindmethodname,defaultactionmethodname)};kukit.er.EventBinder__continue_event__=function(name,node,parms){var oper=new kukit.op.Oper();oper.node=node;if(node){var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binder_id__);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{kukit.logError('Behaviour rule for continuation event "'+name+'" will be ignored, because we found an explicit rule.')}}if(typeof(parms)!='undefined'){oper.parms=parms}else{oper.parms={}}this._1(name,oper);kukit.logDebug('Continuation event "'+name+'" executed on same node.')};kukit.er.EventBinder__continue_event_allnodes__=function(name,parms){var executed=0;var oper=new kukit.op.Oper();var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binder_id__);var opers=info.getBoundOpers(name);for(var i=0;i<opers.length;i++){var oper=opers[i];var newoper=oper.clone();if(typeof(parms)!='undefined'){newoper.parms=parms}else{newoper.parms={}}this._1(name,newoper);executed+=1}kukit.logDebug('Event "'+name+'" executed on '+executed+' nodes.')};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){kukit.log('Attempt of late binding for event '+this.name+', node '+this.node.nodeName);if(kukit.hasFirebug){kukit.log(this.node)}var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.binderinstance.__binder_id__);var oper=info.bound.getBoundOperForNode(this.name,this.node);if(oper){oper.parms={};this.bound=function(){this.binderinstance._1(this.name,oper)};kukit.log('node bound')}else{kukit.logWarning('no node bound');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.__event_namespace__;kukit.logDebug('Calling implicit event "'+name+'" on namespace "'+namespace+'"');var success=oper.executeDefaultAction(name,true);if(!success){throw 'Could not trigger event name "'+name+'" on namespace "'+namespace+'", because there is neither an explicit kss rule, nor a default method'}}};kukit.er.EventBinder_callmethod=function(namespace,name,oper,methodname){var method=this[methodname];if(!method){throw 'Could not trigger event name "'+name+'" on namespace "'+namespace+'", because the method "'+methodname+'" does not exist.'}oper.binderinstance=this;method.call(this,name,oper)};kukit.er.decorateEventBinderClass=function(cls){cls.prototype.__continue_event__=kukit.er.EventBinder__continue_event__;cls.prototype.__continue_event_allnodes__=kukit.er.EventBinder__continue_event_allnodes__;cls.prototype._1=kukit.er.EventBinder_triggerevent;cls.prototype._10=kukit.er.EventBinder_callmethod;cls.prototype.__make_func_to_bind__=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'){kukit.logDebug('instantiating event id='+id+', classname='+classname+', namespace='+namespace);binderinstance=new(kukit.eventsGlobalRegistry.getBinder(classname))();binderinfo=this.info[id]=new kukit.er.BinderInfo(binderinstance);binderinstance.__binder_id__=id;binderinstance.__binder_classname__=classname;binderinstance.__event_namespace__=namespace}else if(binderinfo.getBinderInstance().__binder_classname__!=classname){throw 'Conflicting class for event id "'+id+'", "'+binderinfo.getBinderInstance().__binder_classname__+'" != "'+classname+'"'}return binderinfo};kukit.er.BinderInfoRegistry.prototype.getBinderInfoById=function(id){var binderinfo=this.info[id];if(typeof(binderinfo)=='undefined'){throw 'Event with id "'+id+'" not found.'}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 'Singleton event with namespace "'+namespace+'" and (event) name "'+name+'" not found.'}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(){var eventRegistry=kukit.eventsGlobalRegistry;for(var i=0;i<eventRegistry.eventsets.length;i++){var eventset=eventRegistry.eventsets[i];if(this.binderinstance.__event_namespace__==eventset.namespace){this._9(eventset.names)}}this.binding.propagateTo(this.bound);this.binding=null};kukit.er.BinderInfo.prototype._9=function(names){var opers=this.binding.getBoundOpersForEventSet(names);if(opers.length==0){return}var kss_selector=opers[0].eventrule.kss_selector;var namespace=kss_selector.namespace;var name=kss_selector.name;var reg=kukit.eventsGlobalRegistry.get(namespace,name);var methodname=reg.bindmethodname;if(!methodname){return}var method=this.binderinstance[methodname];if(typeof(method)=='undefined'){throw new kukit.err.rd.EventBindError('Method "'+methodname+'" does not exist',name,namespace)}if(reg.bindmethodapi=='new'){try{method.call(binderinstance,opers)}catch(e){throw new kukit.err.rd.EventBindError('Error during binding, reason: ['+e+']',name,namespace)}}else{for(var i=0;i<opers.length;i++){var oper=opers[i];var func_to_bind=oper.makeExecuteActionsHook();if(this.binderinstance!=oper.binderinstance){throw new kukit.err.rd.EventBindError('fatal: wrong binder instance')}var binderinstance=oper.binderinstance;var eventname=oper.getEventName();try{method.call(binderinstance,eventname,func_to_bind,oper)}catch(e){throw new kukit.err.rd.EventBindError('Error during binding, reason: ['+e+']',eventname,oper.getEventNamespace())}}}};kukit.er.OperRegistry=function(){this.info={}};kukit.er.OperRegistry.prototype.propagateTo=function(newreg){for(var key in this.info){var rules_per_name=this.info[key];for(var name in rules_per_name){var oper=rules_per_name[name];newreg.bindOper(oper)}}};kukit.er.OperRegistry.prototype.checkOperBindable=function(oper){var info=this.info;var name=oper.eventrule.kss_selector.name;var nodehash=kukit.rd.hashnode(oper.node);var rules_per_name=info[name];if(typeof(rules_per_name)=='undefined'){rules_per_name=info[name]={}}else if(typeof(rules_per_name[nodehash])!='undefined'){throw 'Mismatch in bind registry, '+name+' already bound to node in this instance.'}return rules_per_name};kukit.er.OperRegistry.prototype.bindOper=function(oper){var nodehash=kukit.rd.hashnode(oper.node);var rules_per_name=this.checkOperBindable(oper);rules_per_name[nodehash]=oper};kukit.er.OperRegistry.prototype.getBoundOperForNode=function(name,node){var rules_per_name=this.info[name];if(typeof(rules_per_name)=='undefined'){return null}var nodehash=kukit.rd.hashnode(node);var oper=rules_per_name[nodehash];if(typeof(oper)=='undefined'){return null}return oper};kukit.er.OperRegistry.prototype.getBoundOpers=function(name){var opers=[];var rules_per_name=this.info[name];if(typeof(rules_per_name)!='undefined'){for(var nodehash in rules_per_name){opers.push(rules_per_name[nodehash])}}return opers};kukit.er.OperRegistry.prototype.getBoundOpersForEventSet=function(names){var opers=[];for(var i=0;i<names.length;i++){var name=names[i];opers=opers.concat(this.getBoundOpers(name))}return opers};kukit.ar={};kukit.ar.ActionRegistry=function(){this.content={}};kukit.ar.ActionRegistry.prototype.register=function(name,func){if(typeof(func)=='undefined'){throw 'func argument is mandatory when registering an action (ActionRegistry.register).'}if(this.content[name]){kukit.logError('Error : action "'+name+'" already registered.');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 'Error : undefined local action "'+name+'"'}return func};kukit.actionsGlobalRegistry=new kukit.ar.ActionRegistry();kukit.ar.actionRegistry={};kukit.ar.actionRegistry.register=function(name,func){kukit.logWarning('Deprecated kukit.ar.actionRegistry.register, use kukit.actionsGlobalRegistry.register instead! ('+name+')');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++){result[i]=parentNode.insertBefore(ownerDoc.importNode(nodes[i],true),nodeTo)}}else{for(var i=0;i<nodes.length;i++){result[i]=parentNode.insertBefore(nodes[i].cloneNode(true),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 root_txt='<html xmlns="http://www.w3.org/1999/xhtml"><div>'+param+'</div></html>';var doc=(new DOMParser()).parseFromString(root_txt,"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,in_nodes){if(typeof(in_nodes)!='undefined'&&in_nodes==null){throw 'Selection error in kukit.dom.cssQuery'}var result=cssQuery(selector);return result};kukit.dom.focus=function(node){tagName=node.tagName.toLowerCase();if((tagName=='input')||(tagName=='select')||(tagName=='textarea')){node.focus()}else{kukit.logWarning('Focus on node that cannot have focus !')}};kukit.dom.textContent=function(node,recursive){var value=kukit.dom._15(node,recursive);value=value.replace(/\r\n/g,' ');value=value.replace(/[\r\n]/g,' ');return value};kukit.dom._15=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'}var value=node.getAttribute(attrname);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'}if(attrname.toLowerCase()=='class'){node.className=value}else if(attrname.toLowerCase()=='for'){node.htmlFor=value;node.setAttribute(attrname,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 result=kukit.dom.getAttribute(node,kukit.dom.kssAttrNamespace+':'+attrname);if(!result){result=kukit.dom.getKssClassAttribute(node,attrname)}return result};kukit.dom.setKssAttribute=function(node,attrname,value){kukit.dom.setAttribute(node,kukit.dom.kssAttrNamespace+':'+attrname,value)};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){this.framename=framename;this.func=func;var self=this;var f=function(){kukit.logDebug('Is iframe loaded ?');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._3){return}if(typeof doc._kssReadyForLoadEvent!='undefined'){this.counter.restart=false}if(!this.counter.restart){kukit.logDebug('Yes, iframe is loaded.');doc._3=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]){kukit.logError('ValueError : command "'+name+'" is already registered.');return}this.commands[name]=klass};kukit.cr.CommandRegistry.prototype.get=function(name){var klass=this.commands[name];if(!klass){kukit.logError('ValueError : no command registered under name : '+name)}return klass};kukit.commandsGlobalRegistry=new kukit.cr.CommandRegistry();kukit.cr.commandRegistry={};kukit.cr.commandRegistry.registerFromAction=function(srcname,factory,name){kukit.logWarning('Deprecated kukit.cr.commandRegistry.registerFromAction, use kukit.commandsGlobalRegistry.registerFromAction instead! ('+srcname+')');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._8=function(oper){var newoper=oper.clone({'parms':this.parms,'orignode':oper.node,'node':null});this.executeOnScope(newoper)};kukit.cr._7=function(oper){var selfunc=kukit.selectorTypesGlobalRegistry.get(this.selectorType);var nodes=selfunc(this.selector,null,oper.orignode);var printtype;if(this.selectorType){printtype=this.selectorType}else{printtype='default ('+kukit.selectorTypesGlobalRegistry.defaultSelectorType+')'}kukit.logDebug('Selector type: '+printtype+', selector : "'+this.selector+'", selected nodes:'+nodes.length);if(!nodes||nodes.length==0){kukit.logWarning('Selector found no nodes')}for(var i=0;i<nodes.length;i++){oper.node=nodes[i];kukit.logDebug('Command Name: '+this.name);this.executeOnSingleNode(oper)}};kukit.cr.makeSelectorCommand=function(name,executeOnSingleNode){var commandClass=function(){};commandClass.prototype={execute:kukit.cr._8,executeOnScope:kukit.cr._7,executeOnSingleNode:executeOnSingleNode};kukit.commandsGlobalRegistry.register(name,commandClass)};kukit.cr.makeGlobalCommand=function(name,executeOnce){var commandClass=function(){};commandClass.prototype={execute:kukit.cr._8,executeOnScope:executeOnce,executeOnSingleNode:executeOnce};kukit.commandsGlobalRegistry.register(name,commandClass)};kukit.sa={};kukit.sa.ServerAction=function(name,oper){this.url=oper.aparms.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 formsubmit=this.oper.aparms.kssSubmitForm;if(formsubmit){for(var i=0;i<formsubmit.length;i++){var item=formsubmit[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){try{this.processResult(domDoc)}catch(e){if(e.name=='RuleMergeError'||e.name=='EventBindError'){var msg='Error setting up events: '+e.toString();kukit.logFatal(msg);throw msg}else if(e.name=='ResponseParsingError'){this.processError('Response parsing error: '+e)}else if(e.name=='ExplicitError'){this.processError(e.errorcommand)}else{kukit.logError('Unhandled error during command execution: '+e);throw e}}}}};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 new kukit.err.ResponseParsingError('Error parsing X-KSSCOMMANDS header.')}commandstags=kukit.dom.getNsTags(dom,'commands');if(commandstags.length!=1){dom=null}}else{dom=domDoc.responseXML;var errtxt='Unknown server error (invalid KSS response, no error info received)';if(dom&&dom.parseError&&(dom.parseError!=0)){throw new kukit.err.ResponseParsingError(errtxt+': '+Sarissa.getParseErrorText(dom))}else{throw new kukit.err.ResponseParsingError(errtxt)}}}if(dom==null){throw new kukit.err.ResponseParsingError('Neither xml nor html payload.')}var commands=kukit.dom.getNsTags(dom,'command');if(commands.length==0){kukit.logWarning('No commands in kukit response');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)}var reason='';if(typeof(errorcommand)=='string'){reason=', client_reason="'+errorcommand+'" '}else if(typeof(errorcommand)!='undefined'){reason=', server_reason="'+errorcommand.parms.message+'" '}if(error_action){kukit.logWarning('Request failed at url '+this.oper.queueItem.url+', rid='+this.oper.queueItem.rid+reason+', will be handled by action "'+error_action.name+'"');error_action.execute(this.oper)}else{kukit.logError('Request failed at url '+this.oper.queueItem.url+', rid='+this.oper.queueItem.rid+reason)}};kukit.rm={};kukit.rm._17=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._17;kukit.rm._17++;if(kukit.rm._17>=10000000000){kukit.rm._17=0}};kukit.rm.RequestItem.prototype.callTimeoutHook=function(){if(this.timeoutHook){this.timeoutHook(this)}};kukit.rm.RequestItem.prototype.setReceivedCallback=function(func){this._5=func};kukit.rm.RequestItem.prototype.receivedResult=function(now){var result=this._5(this,now);this._5=null;return result};kukit.rm.TimerQueue=function(callback){this.callback=callback;this.queue=new kukit.ut.SortedQueue(this._18);this.nr=0};kukit.rm.TimerQueue.prototype._18=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.nr+=1};kukit.rm.TimerQueue.prototype.pop=function(item){if(typeof(item)=='undefined'||item.handled){return false}else{item.handled=true;this.nr-=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.nr-=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 namestr='';if(name!=null){namestr='['+name+'] '}this.namestr=namestr;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.getInfo=function(){return '(RQ: '+this.sentNr+' OUT, '+this.waitingQueue.size()+' WAI)'};kukit.rm.RequestManager.prototype.log=function(txt){kukit.logDebug('RequestManager '+this.namestr+txt+' '+this.getInfo())};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.log('Notify server '+item.url+', rid='+item.rid);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.log('Timeout checking suspended until the next requests');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.log('Dequeue server notification at '+waiting.url+', rid='+waiting.rid);this.pushSentRequest(waiting,now)}else{this.setSpinnerState(false)}return success};kukit.rm.RequestManager.prototype.receiveItem=function(item,now){var success=this.receivedResult(item,now);if(success){this.log('Received result with rid='+item.rid)}else{this.log('Received timed out result rid='+item.rid+', to be ignored')}return success};kukit.rm.RequestManager.prototype.timeoutItem=function(item){this.log('Timed out request rid='+item.rid);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);this.log('Queue server notification at '+item.url+', rid='+item.rid)}};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){kukit.log('Parse commands');kukit.logDebug('Number of commands: '+commands.length);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 new kukit.err.ExplicitError(lastcommand)}}};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];try{command.execute(oper)}catch(e){if(e.name=='RuleMergeError'||e.name=='EventBindError'){throw(e)}else{throw new kukit.err.CommandExecutionError(e,command)}}}kukit.engine.finishSetupEventsCollection()};kukit.sr={};kukit.sr.pproviderSelRegistry=new kukit.pr.ParamProviderRegistry();kukit.sr.AnyPP=function(){};kukit.sr.AnyPP.prototype={check:function(args){if(args.length!=1){throw 'internal error, AnyPP needs 1 argument'}},eval:function(args,node){var f=kukit.selectorTypesGlobalRegistry.get(this.selector_type);return f(args[0],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.check=kukit.sr.AnyPP.prototype.check;pp.prototype.selector_type=selector_type;return pp};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.'}if(this.mapping[name]){kukit.logError('Error : redefinition attempt of selector '+name);return}this.mapping[name]=func;if(name!='sanenode'){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];if(typeof(result)=='undefined'){throw 'Unknown selector type "'+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,orignode){nodes=[orignode];return nodes});kukit.selectorTypesGlobalRegistry.register('parentnode',function(expr,node,orignode){var selectednodes=kukit.dom.cssQuery(expr);var node=orignode||node;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(typeof(value)=='object'){for(var key in value){var qkey=kukit.fo.dictprefix+name+kukit.fo.dictseparator+key+kukit.fo.dictpostfix;var elem=new kukit.fo.FormQueryElem(qkey,value[key]);this.l.push(elem)}}else{var elem=new kukit.fo.FormQueryElem(name,value);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){kukit.logWarning("No form found");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.selectedIndex<0){value=""}else{var option=element.options[element.selectedIndex];value=option.value;if(value=="")value=option.text}}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);if(value==null){kukit.logWarning('Form element not harvested: '+element.tagName)}else{kukit.logDebug("Form element ("+element.tagName+"): name="+element.name+", value="+value)}}else{kukit.logWarning('Form element '+name+'" not found in form.')}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){kukit.logWarning('Form element not harvested: '+element.tagName)}else{kukit.logDebug("Form element ("+element.tagName+"): name="+element.name+", value="+value);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 'Double registration of editor update on node.'}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.ParamProviderRegistry();kukit.fo.FormPP=function(){};kukit.fo.FormPP.prototype={check:function(args){if(args.length!=1){throw 'form method needs 1 arguments (formname)'}},eval:function(args,node){return kukit.fo.getAllFormVars(new kukit.fo.NamedFormLocator(args[0]),new kukit.ut.TupleCollector())}};kukit.fo.pproviderFormRegistry.register('form',kukit.fo.FormPP);kukit.fo.CurrentFormPP=function(){};kukit.fo.CurrentFormPP.prototype={check:function(args){if(args.length!=0){throw 'currentForm method needs no argument'}},eval:function(args,node){return kukit.fo.getAllFormVars(new kukit.fo.CurrentFormLocator(node),new kukit.ut.TupleCollector())}};kukit.fo.pproviderFormRegistry.register('currentForm',kukit.fo.CurrentFormPP);kukit.fo.pproviderFormRegistry.register('',kukit.fo.FormPP);kukit.fo.getCurrentForm=function(target){kukit.logWarning('Deprecated kukit.fo.getCurrentForm(target), new kukit.fo.CurrentFormLocator(target).getForm() instead!');return new kukit.fo.CurrentFormLocator(target).getForm()};kukit.fo.getFormVarFromCurrentForm=function(target,name){kukit.logWarning('Deprecated kukit.fo.getFormVarFromCurrentForm(target, name), use kukit.fo.getFormVar(new kukit.fo.CurrentFormLocator(target), name) instead!');return kukit.fo.getFormVar(new kukit.fo.CurrentFormLocator(target),name)};kukit.fo.getFormVarFromNamedForm=function(formname,name){kukit.logWarning('Deprecated kukit.fo.getFormVarFromNamedForm(formname, name), use kukit.fo.getFormVar(new kukit.fo.NamedFormLocator(formname), name) instead!');return kukit.fo.getFormVar(new kukit.fo.NamedFormLocator(formname),name)};kukit.fo.getAllFormVarsFromCurrentForm=function(target){kukit.logWarning('Deprecated kukit.fo.getAllFormVarsFromCurrentForm(target), use kukit.fo.getAllFormVars(new kukit.fo.CurrentFormLocator(target), new kukit.ut.DictCollector()) instead!');return kukit.fo.getAllFormVars(new kukit.fo.CurrentFormLocator(target),new kukit.ut.DictCollector())};kukit.fo.getAllFormVarsFromNamedForm=function(formname){kukit.logWarning('Deprecated kukit.fo.getAllFormVarsFromNamedtForm(formname), use kukit.fo.getAllFormVars(new kukit.fo.NamedFormLocator(formname), new kukit.ut.DictCollector()) instead!');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.NativeEventBinder=function(){};kukit.pl.NativeEventBinder.prototype.__bind__node=function(name,func_to_bind,oper){if(oper.node==null){throw 'Native event "'+name+'"must be bound to a node.'}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){if(oper.node!=null){throw 'Native event "'+name+'"must not be bound to a node.'}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.completeParms([],{'preventdefault':'','allowbubbling':'','preventbubbling':''},'native event binding');oper.evalBool('preventdefault','native event binding');oper.evalBool('allowbubbling','native event binding');oper.evalBool('preventbubbling','native event binding');if(oper.parms.preventdefault){if(name!='click'){throw 'In native events only the click event can have preventdefault.'}}var allowbubbling=oper.parms.allowbubbling;var preventdefault=oper.parms.preventdefault;var node=oper.node;var func=function(e){target=kukit.pl.getTargetForBrowserEvent(e);if(allowbubbling||target==node){var exc;try{func_to_bind({'browserevent':e})}catch(exc1){exc=exc1}if(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}}else{kukit.log('Ignored bubbling event for "'+name+'" (target ='+target.tagName+'), EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid)}};kukit.ut.registerEventListener(node,name,func);if(preventdefault&&kukit.HAVE_SAFARI&&(allowbubbling||name=='click'&&node.tagName.toLowerCase()=='a')){
function cancelClickSafari(){return false}node.onclick=cancelClickSafari}};kukit.pl.NativeEventBinder.prototype.__bind_key__=function(name,func_to_bind,oper){oper.completeParms([],{'preventdefault':'true','allowbubbling':'','keycodes':''},'native key event binding');oper.evalList('keycodes','native key event binding');oper.evalBool('preventdefault','native key event binding');oper.evalBool('allowbubbling','native key event binding');var allowbubbling=oper.parms.allowbubbling;var preventdefault=oper.parms.preventdefault;var node=oper.node;var keycodes={};for(var i=0;i<oper.parms.keycodes.length;i++){keyCode=oper.parms.keycodes[i];keycodes[keyCode]=true}var func=function(e){target=kukit.pl.getTargetForBrowserEvent(e);if(allowbubbling||target==node){var keyCode=e.keyCode.toString();if(oper.parms.keycodes.length==0||keycodes[keyCode]){func_to_bind({'browserevent':e});if(preventdefault){if(e.preventDefault)e.preventDefault();try{e.returnValue=false}catch(exc){}}}else{kukit.log('Ignored event for "'+name+'", keycode '+e.keyCode+' not in '+oper.parms.keycodes)}}else{kukit.log('Ignored bubbling event for "'+name+'" (target ='+target.tagName+'), EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid)}};kukit.ut.registerEventListener(node,name,func)};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.completeParms(['delay'],{'repeat':'true'},'timeout event binding');oper.evalBool('repeat','timeout event binding');var key=oper.eventrule.getNr();if(oper.parms.repeat&&this.counters[key]){kukit.logDebug('timer event key ignored for actionEvent #'+key+' '+oper.eventrule.kss_selector.css)}else{kukit.logDebug('timer event key entered for actionEvent #'+key+' '+oper.eventrule.kss_selector.css);var f=function(){if(oper.node!=null&&!oper.node.parentNode){kukit.logDebug('timer deleted for actionEvent #'+key+' '+oper.eventrule.kss_selector.css);this.clear()}else{func_to_bind()}};var counter=new kukit.ut.TimerCounter(oper.parms.delay,f,oper.parms.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.__bind__=function(name,func_to_bind,oper){oper.completeParms([],{'initial':'true','insert':'true'},'load event binding');oper.evalBool('initial','load event binding');oper.evalBool('insert','load event binding');var phase=oper.node._12;if(phase==1&&!oper.parms.initial){kukit.logDebug('EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid+' event ignored, oninitial=false.');return}if(phase==2&&!oper.parms.insert){kukit.logDebug('EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid+' event ignored, oninsert=false.');return}if(oper.node!=null&&oper.node.tagName.toLowerCase()=='iframe'&&(phase==2||(phase==1&&kukit.engine.initializedOnDOMLoad))){kukit.logDebug('EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid+' event selected delayed execution (when iframe loaded)');var f=function(){kukit.engine.bindScheduler.addPost(func_to_bind,'Execute load event for iframe '+oper.node.name)};new kukit.dom.EmbeddedContentLoadedScheduler(oper.node.id,f)}else{kukit.logDebug('EventRule #'+oper.eventrule.getNr()+' mergeid '+oper.eventrule.kss_selector.mergeid+' event selected normal postponed execution.');kukit.engine.bindScheduler.addPost(func_to_bind,'Execute load event for node '+oper.node.tagName.toLowerCase())}};kukit.eventsGlobalRegistry.register(null,'load',kukit.pl.LoadEventBinder,'__bind__',null);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.completeParms([],{'laziness':0},'spinner event binding');oper.evalInt('laziness','spinner event binding');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){oper.completeParms([],{'message':'LogDebug action'},'logDebug action');var node=oper.node;var nodeName='<DOCUMENT>';if(node!=null){nodeName=node.nodeName}var message=oper.parms.message;if(oper.eventrule){message=message+', event='+oper.eventrule.kss_selector.name+', rule=#'+oper.eventrule.getNr()+', node='+nodeName}kukit.logDebug(message);if(kukit.hasFirebug){kukit.logDebug(oper.node)}});kukit.commandsGlobalRegistry.registerFromAction('logDebug',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register("log",function(oper){oper.completeParms([],{'message':'Log action'},'log action');var node=oper.node;var nodeName='<DOCUMENT>';if(node!=null){nodeName=node.nodeName}var message=oper.parms.message;if(oper.eventrule){message=message+', event='+oper.eventrule.kss_selector.name+', rule=#'+oper.eventrule.getNr()+', node='+nodeName}kukit.log(message)});kukit.commandsGlobalRegistry.registerFromAction('log',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register("alert",function(oper){oper.completeParms([],{'message':'Alert action'},'alert action');var node=oper.node;var nodeName='<DOCUMENT>';if(node!=null){nodeName=node.nodeName}var message=oper.parms.message;if(oper.eventrule){message=message+', rule=#'+oper.eventrule.getNr()+', node='+nodeName}alert(message)});kukit.commandsGlobalRegistry.registerFromAction('alert',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('replaceInnerHTML',function(oper){oper.completeParms(['html'],{'withKssSetup':true},'replaceInnerHTML action');oper.evalBool('withKssSetup','setup events on inserted nodes');var node=oper.node;var insertedNodes;if(typeof(oper.parms.html)=='string'){node.innerHTML=oper.parms.html;insertedNodes=node.childNodes}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.completeParms(['html'],{'withKssSetup':true},'replaceHTML action');oper.evalBool('withKssSetup','setup events on inserted nodes');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.completeParms(['name','value'],{},'setAttribute action');if(oper.parms.name.toLowerCase()=='style'){throw 'Style attribute is not allowed with setAttribute'}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.completeParms(['name','value'],{},'setKssAttribute action');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.completeParms(['name','value'],{},'setStyle action');oper.node.style[oper.parms.name]=oper.parms.value});kukit.commandsGlobalRegistry.registerFromAction('setStyle',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('addClassName',function(oper){oper.completeParms(['name'],{},'addClassName action');addClassName(oper.node,oper.parms.name)});kukit.commandsGlobalRegistry.registerFromAction('addClassName',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('removeClassName',function(oper){oper.completeParms(['name'],{},'addClassName action');removeClassName(oper.node,oper.parms.name)});kukit.commandsGlobalRegistry.registerFromAction('removeClassName',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAfter',function(oper){oper.completeParms(['html'],{'withKssSetup':true},'insertHTMLAfter action');oper.evalBool('withKssSetup','setup events on inserted nodes');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)}kukit.logDebug("Inserted nodes length: "+insertedNodes.length);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAfter',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLBefore',function(oper){oper.completeParms(['html'],{'withKssSetup':true},'insertHTMLBefore action');oper.evalBool('withKssSetup','setup events on inserted nodes');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);kukit.logDebug("Inserted nodes length: "+insertedNodes.length);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLBefore',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAsLastChild',function(oper){oper.completeParms(['html'],{'withKssSetup':true},'insertHTMLAsLastChild action');oper.evalBool('withKssSetup','setup events on inserted nodes');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);kukit.logDebug("Inserted nodes length: "+insertedNodes.length);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAsLastChild',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('insertHTMLAsFirstChild',function(oper){oper.completeParms(['html'],{'withKssSetup':true},'insertHTMLAsFirstChild action');oper.evalBool('withKssSetup','setup events on inserted nodes');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)}kukit.logDebug("Inserted nodes length: "+insertedNodes.length);if(oper.parms.withKssSetup){kukit.engine.setupEvents(insertedNodes)}});kukit.commandsGlobalRegistry.registerFromAction('insertHTMLAsFirstChild',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('deleteNodeAfter',function(oper){oper.completeParms([],{},'deleteNodeAfter action');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){oper.completeParms([],{},'deleteNodeBefore action');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){oper.completeParms([],{},'deleteNode action');var parentNode=oper.node.parentNode;parentNode.removeChild(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('deleteNode',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('clearChildNodes',function(oper){oper.completeParms([],{'none':false},'clearChildNodes action');kukit.dom.clearChildNodes(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('clearChildNodes',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('focus',function(oper){oper.completeParms([],{'none':false},'focus action');kukit.dom.focus(oper.node)});kukit.commandsGlobalRegistry.registerFromAction('focus',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register('moveNodeAfter',function(oper){oper.completeParms(['html_id'],{},'moveNodeAfter action');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('copyChildNodesFrom',function(oper){oper.completeParms(['html_id'],{},'copyChildNodesFrom action');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){oper.completeParms(['html_id'],{},'copyChildNodesTo action');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){oper.completeParms(['varname','value'],{},'setStateVar action');kukit.engine.statevars[oper.parms.varname]=oper.parms.value});kukit.commandsGlobalRegistry.registerFromAction('setStateVar',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('continueEvent',function(oper){oper.completeParms(['name'],{'allnodes':'false'},'continueEvent action',true);oper.evalBool('allnodes','continueEvent');var parms=oper.parms;var binderinstance=oper.binderinstance;var allnodes=parms.allnodes;var actionparms={};for(var key in parms){if(key!='name'&&key!='allnodes'){actionparms[key]=parms[key]}}if(parms.allnodes){binderinstance.__continue_event_allnodes__(parms.name,actionparms)}else{binderinstance.__continue_event__(parms.name,oper.node,actionparms)}});kukit.commandsGlobalRegistry.registerFromAction('continueEvent',kukit.cr.makeGlobalCommand);kukit.actionsGlobalRegistry.register('executeCommand',function(oper){oper.completeParms(['name','selector'],{'selectorType':null},'executeCommand action',true);var parms=oper.parms;var actionparms={};for(var key in parms){if(key!='name'&&key!='selector'&&key!='selectorType'){actionparms[key]=parms[key]}}var command=new kukit.cr.makeCommand(parms.selector,parms.name,parms.selectorType,actionparms);command.execute(oper)});kukit.actionsGlobalRegistry.register("toggleClass",function(oper){oper.completeParms(['classname'],{},'toggleClass action');var node=oper.node;var classname=oper.parms.classname;var nodeclass=kukit.dom.getAttribute(node,'class');var foundclassatindex=-1;var parts=nodeclass.split(' ');for(var i=0;i<parts.length;i++){if(parts[i]==classname){foundclassatindex=i}}if(foundclassatindex==-1){parts.push(classname)}else{parts.splice(foundclassatindex,1)}kukit.dom.setAttribute(node,'class',parts.join(' '))});kukit.commandsGlobalRegistry.registerFromAction('toggleClass',kukit.cr.makeGlobalCommand);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.draganddrop={};kukit.draganddrop.DragAndDropEvent=function(){};kukit.draganddrop.DragAndDropEvent.prototype.isNotBoundDraggable=function(oper){var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binder_id__);return!(info.bound.getBoundOperForNode('drop',oper.node)||info.bound.getBoundOperForNode('hover',oper.node))};kukit.draganddrop.DragAndDropEvent.prototype.isNotBoundDroppable=function(oper){var info=kukit.engine.binderInfoRegistry.getBinderInfoById(this.__binder_id__);return!(info.bound.getBoundOperForNode(this,'drag',oper.node)||info.bound.getBoundOperForNode(this,'start',oper.node)||info.bound.getBoundOperForNode(this,'end',oper.node))};kukit.draganddrop.DragAndDropEvent.prototype.__bind_drop__=function(name,func_to_bind,oper){oper.completeParms([],{},'dad-drop event binding');self=this;if(this.isNotBoundDroppable(oper)){var options={onDrop:this.__make_func_to_bind__('drop',oper.node),onHover:this.__make_func_to_bind__('hover',oper.node)};Droppables.add(oper.node,options);kukit.logDebug('Droppable bound')}};kukit.draganddrop.DragAndDropEvent.prototype.__bind_drag__=function(name,func_to_bind,oper){oper.completeParms([],{'constraint':'not-set'},'dad-drag event binding');if(this.isNotBoundDraggable(oper)){var options={onDrag:this.__make_func_to_bind__('drag',oper.node),onStart:this.__make_func_to_bind__('start',oper.node),onEnd:this.__make_func_to_bind__('end',oper.node)};if(oper.parms.constraint=='horizontal'||oper.parms.constraint=='vertical'){kukit.logDebug('constraint: '+oper.parms.constraint+"|"+name);options['constraint']=oper.parms.constraint}new Draggable(oper.node,options);kukit.logDebug('Draggable bound')}};kukit.eventsGlobalRegistry.register('dad','drop',kukit.draganddrop.DragAndDropEvent,'__bind_drop__',null);kukit.eventsGlobalRegistry.register('dad','hover',kukit.draganddrop.DragAndDropEvent,'__bind_drop__',null);kukit.eventsGlobalRegistry.register('dad','drag',kukit.draganddrop.DragAndDropEvent,'__bind_drag__',null);kukit.eventsGlobalRegistry.register('dad','start',kukit.draganddrop.DragAndDropEvent,'__bind_drag__',null);kukit.eventsGlobalRegistry.register('dad','end',kukit.draganddrop.DragAndDropEvent,'__bind_drag__',null);kukit.plone={};if(typeof(addDOMLoadEvent)!='undefined'){var f=function(){kukit.log('KSS initialized by Plone DOMLoad event.');kukit.bootstrapFromDOMLoad()};addDOMLoadEvent(f);kukit.log('Installed KSS bootstrap in Plone DOMLoad event.')}else{kukit.logWarning('Plone addDOMLoadEvent not found by KSS, DOMLoad activation skipped (you might want to add event-registration.js to ResourceRegistries)')}kukit.actionsGlobalRegistry.register("plone-initKupu",function(oper){kukit.logDebug('Enter plone-initKupu');oper.completeParms([],{},'plone-initKupu action');if(oper.node.tagName.toLowerCase()!='iframe'){throw 'The plone-initKupu action can only be setup on an iframe node.'}var divnode=oper.node.parentNode.parentNode.parentNode.parentNode;var id=divnode.id;if(!id){throw 'The plone-initKupu action did not find the editor id from the iframe node.'}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.completeParms([],{},'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.completeParms([],{},'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.completeParms([],{},'plone-initFormTabs action');if(oper.node.tagName.toLowerCase()!='form'){throw 'The plone-initFormTabs action can only execute on a form node as a target.'}var form=oper.node;ploneFormTabbing.initializeForm(form)});kukit.commandsGlobalRegistry.registerFromAction('plone-initFormTabs',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initFormProtection",function(oper){oper.completeParms([],{},'plone-initFormProtection action');if(oper.node.tagName.toLowerCase()!='form'){throw 'The plone-initFormProtection action can only execute on a form node as a target.'}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.completeParms([],{},'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){result=confirm('Are you sure you want to navigate away from this page?\n\n'+message+'\n\nPress OK to countinue, or Cancel to stay on the current page.')}if(result){binderinstance.__continue_event__('formProtectionChecked',oper.node,{})}else{binderinstance.__continue_event__('formProtectionFailed',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-initShiftDetection",function(oper){oper.completeParms([],{},'plone-initShiftDetection action');kukit.engine.statevars['plone-shiftdown']=false;document.onkeydown=function(e){var evt=e||window.event;if(evt.keyCode==16){kukit.engine.statevars['plone-shiftdown']=true}};document.onkeyup=function(e){var evt=e||window.event;if(evt.keyCode==16){kukit.engine.statevars['plone-shiftdown']=false}}});kukit.commandsGlobalRegistry.registerFromAction('plone-initShiftDetection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initCheckBoxSelection",function(oper){oper.completeParms([],{},'plone-initCheckBoxSelection action');kukit.engine.statevars['plone-foldercontents-firstcheckeditem']=null});kukit.commandsGlobalRegistry.registerFromAction('plone-initCheckBoxSelection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-createCheckBoxSelection",function(oper){oper.completeParms(['group'],{},'plone-createCheckBoxSelection action');var node=oper.node;var firstitem=kukit.engine.statevars['plone-foldercontents-firstcheckeditem'];if(firstitem&&kukit.engine.statevars['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.statevars['plone-foldercontents-firstcheckeditem']=node}});kukit.commandsGlobalRegistry.registerFromAction('plone-createCheckBoxSelection',kukit.cr.makeSelectorCommand);kukit.actionsGlobalRegistry.register("plone-initDragAndDrop",function(oper){oper.completeParms(['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,"+table+" > tbody > tr > td");for(var i=0;i<targets.length;i++){if(hasClassName(targets[i],'notDraggable'))continue;targets[i].onmousedown=ploneDnDReorder.doDown;targets[i].onmouseup=ploneDnDReorder.doUp;addClassName(targets[i],"draggingHook")}});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.completeParms([],{'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('actions for Plone legacy js registered (bind menus)');kukit.actionsGlobalRegistry.register("bindExternalLinks",function(oper){scanforlinks();kukit.logDebug('Plone external links marker registered')});kukit.log('actions for Plone legacy js registered (mark external links)');kukit.actionsGlobalRegistry.register("initializeCollapsible",function(oper){activateCollapsibles()});kukit.log('actions for Plone legacy js registered (initialize collapsible)');

/* - toc.js - */
// http://www.zdginc.com/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];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);

/* - input-label.js - */
// http://www.zdginc.com/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);
