30 | (function($,fluid){"use strict";fluid.promise=function(){var that={onResolve:[],onReject:[]};that.then=function(onResolve,onReject){if(onResolve){if(that.disposition==="resolve"){onResolve(that.value)}else{that.onResolve.push(onResolve)}}if(onReject){if(that.disposition==="reject"){onReject(that.value)}else{that.onReject.push(onReject)}}return that};that.resolve=function(value){if(that.disposition){fluid.fail("Error: resolving promise ",that,' which has already received "'+that.disposition+'"')}else{that.complete("resolve",that.onResolve,value)}return that};that.reject=function(reason){if(that.disposition){fluid.fail("Error: rejecting promise ",that,'which has already received "'+that.disposition+'"')}else{that.complete("reject",that.onReject,reason)}return that};that.complete=function(which,queue,arg){that.disposition=which;that.value=arg;for(var i=0;i<queue.length;++i){queue[i](arg)}};return that};fluid.isPromise=function(totest){return totest&&typeof totest.then==="function"};fluid.toPromise=function(promiseOrValue){if(fluid.isPromise(promiseOrValue)){return promiseOrValue}else{var togo=fluid.promise();togo.resolve(promiseOrValue);return togo}};fluid.promise.follow=function(source,target){source.then(target.resolve,target.reject)};fluid.promise.map=function(source,func){var promise=fluid.toPromise(source);var togo=fluid.promise();promise.then((function(value){var mapped=func(value);if(fluid.isPromise(mapped)){fluid.promise.follow(mapped,togo)}else{togo.resolve(mapped)}}),(function(error){togo.reject(error)}));return togo};fluid.promise.makeSequencer=function(sources,options,strategy){if(!fluid.isArrayable(sources)){fluid.fail("fluid.promise sequence algorithms must be supplied an array as source")}return{sources:sources,resolvedSources:[],index:0,strategy:strategy,options:options,returns:[],promise:fluid.promise()}};fluid.promise.progressSequence=function(that,retValue){that.returns.push(retValue);that.index++;fluid.promise.resumeSequence(that)};fluid.promise.processSequenceReject=function(that,error){for(var i=that.index-1;i>=0;--i){var resolved=that.resolvedSources[i];var accumulator=fluid.isPromise(resolved)&&typeof resolved.accumulateRejectionReason==="function"?resolved.accumulateRejectionReason:fluid.identity;error=accumulator(error)}that.promise.reject(error)};fluid.promise.resumeSequence=function(that){if(that.index===that.sources.length){that.promise.resolve(that.strategy.resolveResult(that))}else{var value=that.strategy.invokeNext(that);that.resolvedSources[that.index]=value;if(fluid.isPromise(value)){value.then((function(retValue){fluid.promise.progressSequence(that,retValue)}),(function(error){fluid.promise.processSequenceReject(that,error)}))}else{fluid.promise.progressSequence(that,value)}}};fluid.promise.makeSequenceStrategy=function(){return{invokeNext:function(that){var source=that.sources[that.index];return typeof source==="function"?source(that.options):source},resolveResult:function(that){return that.returns}}};fluid.promise.sequence=function(sources,options){var sequencer=fluid.promise.makeSequencer(sources,options,fluid.promise.makeSequenceStrategy());fluid.promise.resumeSequence(sequencer);return sequencer.promise};fluid.promise.makeTransformerStrategy=function(){return{invokeNext:function(that){var lisrec=that.sources[that.index];lisrec.listener=fluid.event.resolveListener(lisrec.listener);var value=lisrec.listener.apply(null,[that.returns[that.index],that.options]);return value},resolveResult:function(that){return that.returns[that.index]}}};fluid.promise.makeTransformer=function(listeners,payload,options){listeners.unshift({listener:function(){return payload}});var sequencer=fluid.promise.makeSequencer(listeners,options,fluid.promise.makeTransformerStrategy());sequencer.returns.push(null);fluid.promise.resumeSequence(sequencer);return sequencer};fluid.promise.filterNamespaces=function(listeners,namespaces){if(!namespaces){return listeners}return fluid.remove_if(fluid.makeArray(listeners),(function(element){return element.namespace&&!element.softNamespace&&!fluid.contains(namespaces,element.namespace)}))};fluid.promise.fireTransformEvent=function(event,payload,options){options=options||{};var listeners=options.reverse?fluid.makeArray(event.sortedListeners).reverse():fluid.makeArray(event.sortedListeners);listeners=fluid.promise.filterNamespaces(listeners,options.filterNamespaces);var transformer=fluid.promise.makeTransformer(listeners,payload,options);return transformer.promise}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.dataSource.encoding.JSON",{gradeNames:"fluid.component",invokers:{parse:"fluid.dataSource.parseJSON",render:"fluid.dataSource.stringifyJSON"},contentType:"application/json"});fluid.defaults("fluid.dataSource.encoding.none",{gradeNames:"fluid.component",invokers:{parse:"fluid.identity",render:"fluid.identity"},contentType:"text/plain"});fluid.dataSource.parseJSON=function(string){var togo=fluid.promise();if(!string){togo.resolve(undefined)}else{try{togo.resolve(JSON.parse(string))}catch(err){togo.reject(err)}}return togo};fluid.dataSource.stringifyJSON=function(obj){return obj===undefined?"":JSON.stringify(obj,null,4)};fluid.defaults("fluid.dataSource",{gradeNames:["fluid.component","fluid.contextAware"],contextAwareness:{writable:{checks:{writableValue:{contextValue:"{fluid.dataSource}.options.writable",gradeNames:"{fluid.dataSource}.options.writableGrade"}}}},writable:false,events:{onRead:null,onError:null},components:{encoding:{type:"fluid.dataSource.encoding.JSON"}},listeners:{"onRead.impl":{func:"fluid.notImplemented",priority:"first"},"onRead.encoding":{func:"{encoding}.parse",priority:"after:impl"}},invokers:{get:{funcName:"fluid.dataSource.get",args:["{that}","{arguments}.0","{arguments}.1"]}}});fluid.defaults("fluid.dataSource.writable",{gradeNames:["fluid.component"],events:{onWrite:null,onWriteResponse:null},listeners:{"onWrite.encoding":{func:"{encoding}.render"},"onWrite.impl":{func:"fluid.notImplemented",priority:"after:encoding"},"onWriteResponse.encoding":{func:"{encoding}.parse"}},invokers:{set:{funcName:"fluid.dataSource.set",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]}}});fluid.dataSource.registerStandardPromiseHandlers=function(that,promise,requestOptions){promise.then(requestOptions.callback,requestOptions.onError?requestOptions.onError:that.events.onError.fire)};fluid.dataSource.defaultiseOptions=function(componentOptions,directOptions,directModel,isSet){var options=typeof directOptions==="function"?{callback:directOptions}:fluid.copy(directOptions)||{};options.directModel=directModel;options.operation=isSet?"set":"get";options.notFoundIsEmpty=options.notFoundIsEmpty||componentOptions.notFoundIsEmpty;return options};fluid.dataSource.get=function(that,directModel,directOptions){var requestOptions=fluid.dataSource.defaultiseOptions(that.options,directOptions,directModel);var promise=fluid.promise.fireTransformEvent(that.events.onRead,undefined,requestOptions);fluid.dataSource.registerStandardPromiseHandlers(that,promise,requestOptions);return promise};fluid.dataSource.set=function(that,directModel,model,directOptions){var requestOptions=fluid.dataSource.defaultiseOptions(that.options,directOptions,directModel,true);var transformPromise=fluid.promise.fireTransformEvent(that.events.onWrite,model,requestOptions);var togo=fluid.promise();transformPromise.then((function(setResponse){var options2=fluid.dataSource.defaultiseOptions(that.options,fluid.copy(requestOptions),directModel);var retransformed=fluid.promise.fireTransformEvent(that.events.onWriteResponse,setResponse,options2);fluid.promise.follow(retransformed,togo)}),(function(error){togo.reject(error)}));fluid.dataSource.registerStandardPromiseHandlers(that,togo,requestOptions);return togo}})(jQuery,fluid_3_0_0);var fluid_3_0_0=fluid_3_0_0||{};(function($,fluid){"use strict";fluid.uaMatch=function(ua){ua=ua.toLowerCase();var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];return{browser:match[1]||"",version:match[2]||"0"}};var matched,browser;if(!$.browser){if(!!navigator.userAgent.match(/Trident\/7\./)){browser={msie:true,version:11}}else{matched=fluid.uaMatch(navigator.userAgent);browser={};if(matched.browser){browser[matched.browser]=true;browser.version=matched.version}if(browser.chrome){browser.webkit=true}else if(browser.webkit){browser.safari=true}}$.browser=browser}var NAMESPACE_KEY="fluid-scoped-data";fluid.getScopedData=function(target,key){var data=$(target).data(NAMESPACE_KEY);return data?data[key]:undefined};fluid.setScopedData=function(target,key,value){$(target).each((function(){var data=$.data(this,NAMESPACE_KEY)||{};data[key]=value;$.data(this,NAMESPACE_KEY,data)}))};var lastFocusedElement=null;$(document).on("focusin",(function(event){lastFocusedElement=event.target}));fluid.getLastFocusedElement=function(){return lastFocusedElement};var ENABLEMENT_KEY="enablement";fluid.enabled=function(target,state){target=$(target);if(state===undefined){return fluid.getScopedData(target,ENABLEMENT_KEY)!==false}else{$("*",target).add(target).each((function(){if(fluid.getScopedData(this,ENABLEMENT_KEY)!==undefined){fluid.setScopedData(this,ENABLEMENT_KEY,state)}else if(/select|textarea|input/i.test(this.nodeName)){$(this).prop("disabled",!state)}}));fluid.setScopedData(target,ENABLEMENT_KEY,state)}};fluid.initEnablement=function(target){fluid.setScopedData(target,ENABLEMENT_KEY,true)};fluid.resolveEventTarget=function(event){while(event.originalEvent&&event.originalEvent.target){event=event.originalEvent}return event.target};async function applyOp(node,func){node=$(node)[0];if(node){var promise=new Promise((function(resolve){node.addEventListener(func,resolve,{once:true})}));node[func]();return promise}}$.each(["focus","blur"],(function(i,name){fluid[name]=function(elem){return applyOp(elem,name)}}));fluid.changeElementValue=function(node,value){node=$(node);node.val(value).trigger("change")}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.dom=fluid.dom||{};var getNextNode=function(iterator){if(iterator.node.firstChild){iterator.node=iterator.node.firstChild;iterator.depth+=1;return iterator}while(iterator.node){if(iterator.node.nextSibling){iterator.node=iterator.node.nextSibling;return iterator}iterator.node=iterator.node.parentNode;iterator.depth-=1}return iterator};fluid.dom.iterateDom=function(node,acceptor,allNodes){var currentNode={node:node,depth:0};var prevNode=node;var condition;while(currentNode.node!==null&¤tNode.depth>=0&¤tNode.depth<fluid.dom.iterateDom.DOM_BAIL_DEPTH){condition=null;if(currentNode.node.nodeType===1||allNodes){condition=acceptor(currentNode.node,currentNode.depth)}if(condition){if(condition==="delete"){currentNode.node.parentNode.removeChild(currentNode.node);currentNode.node=prevNode}else if(condition==="stop"){return currentNode.node}}prevNode=currentNode.node;currentNode=getNextNode(currentNode)}};fluid.dom.iterateDom.DOM_BAIL_DEPTH=256;fluid.dom.isContainer=function(container,containee){for(;containee;containee=containee.parentNode){if(container===containee){return true}}return false};fluid.dom.getElementText=function(element){var nodes=element.childNodes;var text="";for(var i=0;i<nodes.length;++i){var child=nodes[i];if(child.nodeType===3){text=text+child.nodeValue}}return text}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";var unUnicode=/(\\u[\dabcdef]{4}|\\x[\dabcdef]{2})/g;fluid.unescapeProperties=function(string){string=string.replace(unUnicode,(function(match){var code=match.substring(2);var parsed=parseInt(code,16);return String.fromCharCode(parsed)}));var pos=0;while(true){var backpos=string.indexOf("\\",pos);if(backpos===-1){break}if(backpos===string.length-1){return[string.substring(0,string.length-1),true]}var replace=string.charAt(backpos+1);if(replace==="n"){replace="\n"}if(replace==="r"){replace="\r"}if(replace==="t"){replace="\t"}string=string.substring(0,backpos)+replace+string.substring(backpos+2);pos=backpos+1}return[string,false]};var breakPos=/[^\\][\s:=]/;fluid.parseJavaProperties=function(text){var togo={};text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");var lines=text.split("\n");var contin,key,valueComp,valueRaw,valueEsc;for(var i=0;i<lines.length;++i){var line=lines[i].trim();if(!line||line.charAt(0)==="#"||line.charAt(0)==="!"){continue}if(!contin){valueComp="";var breakpos=line.search(breakPos);if(breakpos===-1){key=line;valueRaw=""}else{key=line.substring(0,breakpos+1).trim();valueRaw=line.substring(breakpos+2).trim();if(valueRaw.charAt(0)===":"||valueRaw.charAt(0)==="="){valueRaw=valueRaw.substring(1).trim()}}key=fluid.unescapeProperties(key)[0];valueEsc=fluid.unescapeProperties(valueRaw)}else{valueEsc=fluid.unescapeProperties(line)}contin=valueEsc[1];if(!valueEsc[1]){togo[key]=valueComp+valueEsc[0]}else{valueComp+=valueEsc[0]}}return togo};fluid.formatMessage=function(messageString,args){if(!args){return messageString}if(typeof args==="string"){args=[args]}for(var i=0;i<args.length;++i){messageString=messageString.replace("{"+i+"}",args[i])}return messageString}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.renderTimestamp=function(date){var zeropad=function(num,width){if(!width){width=2}var numstr=num===undefined?"":num.toString();return"00000".substring(5-width+numstr.length)+numstr};return zeropad(date.getHours())+":"+zeropad(date.getMinutes())+":"+zeropad(date.getSeconds())+"."+zeropad(date.getMilliseconds(),3)};fluid.isTracing=false;fluid.registerNamespace("fluid.tracing");fluid.tracing.pathCount=[];fluid.tracing.summarisePathCount=function(pathCount){pathCount=pathCount||fluid.tracing.pathCount;var togo={};for(var i=0;i<pathCount.length;++i){var path=pathCount[i];if(!togo[path]){togo[path]=1}else{++togo[path]}}var toReallyGo=[];fluid.each(togo,(function(el,path){toReallyGo.push({path:path,count:el})}));toReallyGo.sort((function(a,b){return b.count-a.count}));return toReallyGo};fluid.tracing.condensePathCount=function(prefixes,pathCount){prefixes=fluid.makeArray(prefixes);var prefixCount={};fluid.each(prefixes,(function(prefix){prefixCount[prefix]=0}));var togo=[];fluid.each(pathCount,(function(el){var path=el.path;if(!fluid.find(prefixes,(function(prefix){if(path.indexOf(prefix)===0){prefixCount[prefix]+=el.count;return true}}))){togo.push(el)}}));fluid.each(prefixCount,(function(count,path){togo.unshift({path:path,count:count})}));return togo};fluid.detectStackStyle=function(e){var style="other";var stackStyle={offset:0};if(e.arguments){style="chrome"}else if(typeof window!=="undefined"&&window.opera&&e.stacktrace){style="opera10"}else if(e.stack){style="firefox";stackStyle.offset=e.stack.indexOf("Trace exception")===-1?1:0}else if(typeof window!=="undefined"&&window.opera&&!("stacktrace"in e)){style="opera"}stackStyle.style=style;return stackStyle};fluid.obtainException=function(){try{throw new Error("Trace exception")}catch(e){return e}};var stackStyle=fluid.detectStackStyle(fluid.obtainException());fluid.registerNamespace("fluid.exceptionDecoders");fluid.decodeStack=function(){if(stackStyle.style!=="firefox"){return null}var e=fluid.obtainException();return fluid.exceptionDecoders[stackStyle.style](e)};fluid.exceptionDecoders.firefox=function(e){var delimiter="at ";var lines=e.stack.replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n");return fluid.transform(lines,(function(line){line=line.replace(/\)/g,"");var atind=line.indexOf(delimiter);return atind===-1?[line]:[line.substring(atind+delimiter.length),line.substring(0,atind)]}))};fluid.getCallerInfo=function(atDepth){atDepth=(atDepth||3)-stackStyle.offset;var stack=fluid.decodeStack();var element=stack&&stack[atDepth][0];if(element){var lastslash=element.lastIndexOf("/");if(lastslash===-1){lastslash=0}var nextColon=element.indexOf(":",lastslash);return{path:element.substring(0,lastslash),filename:element.substring(lastslash+1,nextColon),index:element.substring(nextColon+1)}}else{return null}};fluid.generatePadding=function(c,count){var togo="";for(var i=0;i<count;++i){togo+=c}return togo};fluid.SYNTHETIC_PROPERTY=Object.freeze({});fluid.getSafeProperty=function(obj,key){var desc=Object.getOwnPropertyDescriptor(obj,key);return desc&&!desc.get?obj[key]:fluid.SYNTHETIC_PROPERTY};function printImpl(obj,small,options){function out(str){options.output+=str}var big=small+options.indentChars,isFunction=typeof obj==="function";if(options.maxRenderChars!==undefined&&options.output.length>options.maxRenderChars){return true}if(obj===null){out("null")}else if(obj===undefined){out("undefined")}else if(obj===fluid.SYNTHETIC_PROPERTY){out("[Synthetic property]")}else if(fluid.isPrimitive(obj)&&!isFunction){out(JSON.stringify(obj))}else{if(options.stack.indexOf(obj)!==-1){out("(CIRCULAR)");return}options.stack.push(obj);var i;if(fluid.isArrayable(obj)){if(obj.length===0){out("[]")}else{out("[\n"+big);for(i=0;i<obj.length;++i){if(printImpl(obj[i],big,options)){return true}if(i!==obj.length-1){out(",\n"+big)}}out("\n"+small+"]")}}else{out("{"+(isFunction?" Function":"")+"\n"+big);var keys=fluid.keys(obj);for(i=0;i<keys.length;++i){var key=keys[i];var value=fluid.getSafeProperty(obj,key);out(JSON.stringify(key)+": ");if(printImpl(value,big,options)){return true}if(i!==keys.length-1){out(",\n"+big)}}out("\n"+small+"}")}options.stack.pop()}return}fluid.prettyPrintJSON=function(obj,options){options=$.extend({indent:4,stack:[],output:""},options);options.indentChars=fluid.generatePadding(" ",options.indent);printImpl(obj,"",options);return options.output};fluid.dumpEl=function(element){var togo;if(!element){return"null"}if(element.nodeType===3||element.nodeType===8){return"[data: "+element.data+"]"}if(element.nodeType===9){return"[document: location "+element.location+"]"}if(!element.nodeType&&fluid.isArrayable(element)){togo="[";for(var i=0;i<element.length;++i){togo+=fluid.dumpEl(element[i]);if(i<element.length-1){togo+=", "}}return togo+"]"}element=$(element);togo=element.get(0).tagName;if(element.id){togo+="#"+element.id}if(element.attr("class")){togo+="."+element.attr("class")}return togo}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.visitComponentChildren=function(that,visitor,options,segs){segs=segs||[];for(var name in that){var component=that[name];if(!fluid.isComponent(component)||options.visited&&options.visited[component.id]){continue}segs.push(name);if(options.visited){options.visited[component.id]=true}if(visitor(component,name,segs,segs.length-1)){return true}if(!options.flat){fluid.visitComponentChildren(component,visitor,options,segs)}segs.pop()}};fluid.getContextHash=function(instantiator,that){var shadow=instantiator.idToShadow[that.id];return shadow&&shadow.contextHash};fluid.componentHasGrade=function(that,gradeName){var contextHash=fluid.getContextHash(fluid.globalInstantiator,that);return!!(contextHash&&contextHash[gradeName])};fluid.visitComponentsForMatching=function(that,options,visitor){var instantiator=fluid.getInstantiator(that);options=$.extend({visited:{},instantiator:instantiator},options);var thatStack=[that];var contextHashes=[fluid.getContextHash(instantiator,that)];var visitorWrapper=function(component,name,segs){thatStack.length=1;contextHashes.length=1;for(var i=0;i<segs.length;++i){var child=thatStack[i][segs[i]];thatStack[i+1]=child;contextHashes[i+1]=fluid.getContextHash(instantiator,child)||{}}return visitor(component,thatStack,contextHashes,segs,segs.length)};fluid.visitComponentChildren(that,visitorWrapper,options,[])};fluid.getMemberNames=function(instantiator,thatStack){if(thatStack.length===0){return[]}else{var path=instantiator.idToPath(thatStack[thatStack.length-1].id);var segs=instantiator.parseEL(path);segs.unshift.apply(segs,fluid.generate(thatStack.length-segs.length,""));return segs}};fluid.visitComponentsForVisibility=function(instantiator,thatStack,visitor,options){options=options||{visited:{},flat:true,instantiator:instantiator};var memberNames=fluid.getMemberNames(instantiator,thatStack);for(var i=thatStack.length-1;i>=0;--i){var that=thatStack[i];options.visited[that.id]=true;if(visitor(that,memberNames[i],memberNames,i)){return}if(fluid.visitComponentChildren(that,visitor,options,memberNames)){return}memberNames.pop()}};fluid.mountStrategy=function(prefix,root,toMount){var offset=prefix.length;return function(target,name,i,segs){if(i<=prefix.length){return}for(var j=0;j<prefix.length;++j){if(segs[j]!==prefix[j]){return}}return toMount(target,name,i-prefix.length,segs.slice(offset))}};fluid.invokerFromRecord=function(invokerec,name,that){fluid.pushActivity("makeInvoker","beginning instantiation of invoker with name %name and record %record as child of %that",{name:name,record:invokerec,that:that});var invoker=invokerec?fluid.makeInvoker(that,invokerec,name):undefined;fluid.popActivity();return invoker};fluid.memberFromRecord=function(memberrecs,name,that){var togo;for(var i=0;i<memberrecs.length;++i){var expanded=fluid.expandImmediate(memberrecs[i],that);if(!fluid.isPlainObject(togo)){togo=expanded}else{togo=$.extend(true,togo,expanded)}}return togo};fluid.recordStrategy=function(that,options,optionsStrategy,recordPath,recordMaker,prefix,exceptions){prefix=prefix||[];return{strategy:function(target,name,i){if(i!==1){return}var record=fluid.driveStrategy(options,[recordPath,name],optionsStrategy);if(record===undefined){return}fluid.set(target,[name],fluid.inEvaluationMarker);var member=recordMaker(record,name,that);fluid.set(target,[name],member);return member},initter:function(){var records=fluid.driveStrategy(options,recordPath,optionsStrategy)||{};for(var name in records){if(!exceptions||!exceptions[name]){fluid.getForComponent(that,prefix.concat([name]))}}}}};fluid.instantiateFirers=function(that){var shadow=fluid.shadowForComponent(that);var initter=fluid.get(shadow,["eventStrategyBlock","initter"])||fluid.identity;initter()};fluid.makeDistributionRecord=function(contextThat,sourceRecord,sourcePath,targetSegs,exclusions,sourceType){sourceType=sourceType||"distribution";fluid.pushActivity("makeDistributionRecord","Making distribution record from source record %sourceRecord path %sourcePath to target path %targetSegs",{sourceRecord:sourceRecord,sourcePath:sourcePath,targetSegs:targetSegs});var source=fluid.copy(fluid.get(sourceRecord,sourcePath));fluid.each(exclusions,(function(exclusion){fluid.model.applyChangeRequest(source,{segs:exclusion,type:"DELETE"})}));var record={options:{}};fluid.model.applyChangeRequest(record,{segs:targetSegs,type:"ADD",value:source});fluid.checkComponentRecord(record);fluid.popActivity();return $.extend(record,{contextThat:contextThat,recordType:sourceType})};fluid.filterBlocks=function(contextThat,sourceBlocks,sourceSegs,targetSegs,exclusions,removeSource){var togo=[];fluid.each(sourceBlocks,(function(block){var source=fluid.get(block.source,sourceSegs);if(source!==undefined){togo.push(fluid.makeDistributionRecord(contextThat,block.source,sourceSegs,targetSegs,exclusions,block.recordType));var rescued=$.extend({},source);if(removeSource){fluid.model.applyChangeRequest(block.source,{segs:sourceSegs,type:"DELETE"})}fluid.each(exclusions,(function(exclusion){var orig=fluid.get(rescued,exclusion);fluid.set(block.source,sourceSegs.concat(exclusion),orig)}))}}));return togo};fluid.noteCollectedDistribution=function(parentShadow,memberName,distribution){fluid.model.setSimple(parentShadow,["collectedDistributions",memberName,distribution.id],true)};fluid.isCollectedDistribution=function(parentShadow,memberName,distribution){return fluid.model.getSimple(parentShadow,["collectedDistributions",memberName,distribution.id])};fluid.clearCollectedDistributions=function(parentShadow,memberName){fluid.model.applyChangeRequest(parentShadow,{segs:["collectedDistributions",memberName],type:"DELETE"})};fluid.collectDistributions=function(distributedBlocks,parentShadow,distribution,thatStack,contextHashes,memberNames,i){var lastMember=memberNames[memberNames.length-1];if(!fluid.isCollectedDistribution(parentShadow,lastMember,distribution)&&fluid.matchIoCSelector(distribution.selector,thatStack,contextHashes,memberNames,i)){distributedBlocks.push.apply(distributedBlocks,distribution.blocks);fluid.noteCollectedDistribution(parentShadow,lastMember,distribution)}};fluid.registerCollectedClearer=function(shadow,parentShadow,memberName){if(!shadow.collectedClearer&&parentShadow){shadow.collectedClearer=function(){fluid.clearCollectedDistributions(parentShadow,memberName)}}};fluid.receiveDistributions=function(parentThat,gradeNames,memberName,that){var instantiator=fluid.getInstantiator(parentThat||that);var thatStack=instantiator.getThatStack(parentThat||that);thatStack.unshift(fluid.rootComponent);var memberNames=fluid.getMemberNames(instantiator,thatStack);var shadows=fluid.transform(thatStack,(function(thisThat){return instantiator.idToShadow[thisThat.id]}));var parentShadow=shadows[shadows.length-(parentThat?1:2)];var contextHashes=fluid.getMembers(shadows,"contextHash");if(parentThat){memberNames.push(memberName);contextHashes.push(fluid.gradeNamesToHash(gradeNames));thatStack.push(that)}else{fluid.registerCollectedClearer(shadows[shadows.length-1],parentShadow,memberNames[memberNames.length-1])}var distributedBlocks=[];for(var i=0;i<thatStack.length-1;++i){fluid.each(shadows[i].distributions,(function(distribution){fluid.collectDistributions(distributedBlocks,parentShadow,distribution,thatStack,contextHashes,memberNames,i)}))}return distributedBlocks};fluid.computeTreeDistance=function(path1,path2){var i=0;while(i<path1.length&&i<path2.length&&path1[i]===path2[i]){++i}return path1.length+path2.length-2*i};fluid.computeDistributionPriority=function(targetThat,distributedBlock){if(!distributedBlock.priority){var instantiator=fluid.getInstantiator(targetThat);var targetStack=instantiator.getThatStack(targetThat);var targetPath=fluid.getMemberNames(instantiator,targetStack);var sourceStack=instantiator.getThatStack(distributedBlock.contextThat);var sourcePath=fluid.getMemberNames(instantiator,sourceStack);var distance=fluid.computeTreeDistance(targetPath,sourcePath);distributedBlock.priority=fluid.mergeRecordTypes.distribution-distance}return distributedBlock};fluid.applyDistributions=function(that,preBlocks,targetShadow){var distributedBlocks=fluid.transform(preBlocks,(function(preBlock){return fluid.generateExpandBlock(preBlock,that,targetShadow.mergePolicy)}),(function(distributedBlock){return fluid.computeDistributionPriority(that,distributedBlock)}));var mergeOptions=targetShadow.mergeOptions;mergeOptions.mergeBlocks.push.apply(mergeOptions.mergeBlocks,distributedBlocks);mergeOptions.updateBlocks();return distributedBlocks};fluid.matchIoCSelector=function(selector,thatStack,contextHashes,memberNames,i){var thatpos=thatStack.length-1;var selpos=selector.length-1;while(true){var isChild=selector[selpos].child;var mustMatchHere=thatpos===thatStack.length-1||isChild;var that=thatStack[thatpos];var selel=selector[selpos];var match=true;for(var j=0;j<selel.predList.length;++j){var pred=selel.predList[j];var context=pred.context;if(context&&context!=="*"&&!(contextHashes[thatpos][context]||memberNames[thatpos]===context)){match=false;break}if(pred.id&&that.id!==pred.id){match=false;break}}if(selpos===0&&thatpos>i&&mustMatchHere&&isChild){match=false}if(match){if(selpos===0){return true}--thatpos;--selpos}else{if(mustMatchHere){return false}else{--thatpos}}if(thatpos<i){return false}}};fluid.queryIoCSelector=function(root,selector,flat){var parsed=fluid.parseSelector(selector,fluid.IoCSSMatcher);var togo=[];fluid.visitComponentsForMatching(root,{flat:flat},(function(that,thatStack,contextHashes){if(fluid.matchIoCSelector(parsed,thatStack,contextHashes,[],1)){togo.push(that)}}));return togo};fluid.isIoCSSSelector=function(context){return context.indexOf(" ")!==-1};fluid.pushDistributions=function(targetHead,selector,target,blocks){var targetShadow=fluid.shadowForComponent(targetHead);var id=fluid.allocateGuid();var distribution={id:id,target:target,selector:selector,blocks:blocks};Object.freeze(distribution);Object.freeze(distribution.blocks);fluid.pushArray(targetShadow,"distributions",distribution);return id};fluid.clearDistribution=function(targetHeadId,id){var targetHeadShadow=fluid.globalInstantiator.idToShadow[targetHeadId];if(targetHeadShadow){fluid.remove_if(targetHeadShadow.distributions,(function(distribution){return distribution.id===id}))}};fluid.clearDistributions=function(shadow){fluid.each(shadow.outDistributions,(function(outDist){fluid.clearDistribution(outDist.targetHeadId,outDist.distributionId)}))};fluid.extractSelectorHead=function(parsedSelector){var predList=parsedSelector[0].predList;var context=predList[0].context;predList.length=0;return context};fluid.parseExpectedOptionsPath=function(path,role){var segs=fluid.model.parseEL(path);if(segs[0]!=="options"){fluid.fail("Error in options distribution path ",path," - only "+role+' paths beginning with "options" are supported')}return segs.slice(1)};fluid.replicateProperty=function(source,property,targets){if(source[property]!==undefined){fluid.each(targets,(function(target){target[property]=source[property]}))}};fluid.undistributableOptions=["gradeNames","distributeOptions","argumentMap","initFunction","mergePolicy","progressiveCheckerOptions"];fluid.distributeOptions=function(that,optionsStrategy){var thatShadow=fluid.shadowForComponent(that);var records=fluid.driveStrategy(that.options,"distributeOptions",optionsStrategy);fluid.each(records,(function distributeOptionsOne(record){fluid.pushActivity("distributeOptions","parsing distributeOptions block %record %that ",{that:that,record:record});if(typeof record.target!=="string"){fluid.fail("Error in options distribution record ",record,' a member named "target" must be supplied holding an IoC reference')}if(typeof record.source==="string"^record.record===undefined){fluid.fail("Error in options distribution record ",record,': must supply either a member "source" holding an IoC reference or a member "record" holding a literal record')}var targetRef=fluid.parseContextReference(record.target);var targetHead,selector,context;if(fluid.isIoCSSSelector(targetRef.context)){selector=fluid.parseSelector(targetRef.context,fluid.IoCSSMatcher);var headContext=fluid.extractSelectorHead(selector);if(headContext==="/"){targetHead=fluid.rootComponent}else{context=headContext}}else{context=targetRef.context}targetHead=targetHead||fluid.resolveContext(context,that);if(!targetHead){fluid.fail("Error in options distribution record ",record," - could not resolve context {"+context+"} to a head component")}var targetSegs=fluid.model.parseEL(targetRef.path);var preBlocks;if(record.record!==undefined){preBlocks=[fluid.makeDistributionRecord(that,record.record,[],targetSegs,[])]}else{var source=fluid.parseContextReference(record.source);if(source.context!=="that"){fluid.fail("Error in options distribution record ",record," only a context of {that} is supported")}var sourceSegs=fluid.parseExpectedOptionsPath(source.path,"source");var fullExclusions=fluid.makeArray(record.exclusions).concat(sourceSegs.length===0?fluid.undistributableOptions:[]);var exclusions=fluid.transform(fullExclusions,(function(exclusion){return fluid.model.parseEL(exclusion)}));preBlocks=fluid.filterBlocks(that,thatShadow.mergeOptions.mergeBlocks,sourceSegs,targetSegs,exclusions,record.removeSource);thatShadow.mergeOptions.updateBlocks()}fluid.replicateProperty(record,"priority",preBlocks);fluid.replicateProperty(record,"namespace",preBlocks);if(selector){var distributionId=fluid.pushDistributions(targetHead,selector,record.target,preBlocks);thatShadow.outDistributions=thatShadow.outDistributions||[];thatShadow.outDistributions.push({targetHeadId:targetHead.id,distributionId:distributionId})}else{var targetShadow=fluid.shadowForComponent(targetHead);fluid.applyDistributions(that,preBlocks,targetShadow)}fluid.popActivity()}))};fluid.gradeNamesToHash=function(gradeNames){var contextHash={};fluid.each(gradeNames,(function(gradeName){contextHash[gradeName]=true;contextHash[fluid.computeNickName(gradeName)]=true}));return contextHash};fluid.cacheShadowGrades=function(that,shadow){var contextHash=fluid.gradeNamesToHash(that.options.gradeNames);if(!contextHash[shadow.memberName]){contextHash[shadow.memberName]="memberName"}shadow.contextHash=contextHash;fluid.each(contextHash,(function(troo,context){shadow.ownScope[context]=that;if(shadow.parentShadow&&shadow.parentShadow.that.type!=="fluid.rootComponent"){shadow.parentShadow.childrenScope[context]=that}}))};fluid.deliverOptionsStrategy=function(that,target,mergeOptions){var shadow=fluid.shadowForComponent(that,shadow);fluid.cacheShadowGrades(that,shadow);shadow.mergeOptions=mergeOptions};fluid.collectDistributedGrades=function(rec){var distributedBlocks=fluid.receiveDistributions(null,null,null,rec.that);if(distributedBlocks.length>0){var readyBlocks=fluid.applyDistributions(rec.that,distributedBlocks,rec.shadow);var gradeNamesList=fluid.transform(fluid.getMembers(readyBlocks,["source","gradeNames"]),fluid.makeArray);fluid.accumulateDynamicGrades(rec,fluid.flatten(gradeNamesList))}};fluid.applyDynamicGrades=function(rec){rec.oldGradeNames=fluid.makeArray(rec.gradeNames);var newDefaults=fluid.copy(fluid.getMergedDefaults(rec.that.typeName,rec.gradeNames));rec.gradeNames.length=0;rec.gradeNames.push.apply(rec.gradeNames,newDefaults.gradeNames);fluid.each(rec.gradeNames,(function(gradeName){if(!fluid.isReferenceOrExpander(gradeName)){rec.seenGrades[gradeName]=true}}));var shadow=rec.shadow;fluid.cacheShadowGrades(rec.that,shadow);shadow.mergeOptions.destroyValue(["mergePolicy"]);shadow.mergeOptions.destroyValue(["components"]);shadow.mergeOptions.destroyValue(["invokers"]);rec.defaultsBlock.source=newDefaults;shadow.mergeOptions.updateBlocks();shadow.mergeOptions.computeMergePolicy();fluid.accumulateDynamicGrades(rec,newDefaults.gradeNames)};fluid.accumulateDynamicGrades=function(rec,newGradeNames){fluid.each(newGradeNames,(function(gradeName){var flatGradeName=fluid.flattenGradeName(gradeName);if(!rec.seenGrades[flatGradeName]){if(fluid.isReferenceOrExpander(gradeName)){rec.rawDynamic.push(gradeName);rec.seenGrades[flatGradeName]=true}else if(!fluid.contains(rec.oldGradeNames,gradeName)){rec.plainDynamic.push(gradeName)}}}))};fluid.accumulateContextAwareGrades=function(that,rec){var newContextAware=[];if(fluid.contains(rec.gradeNames,"fluid.contextAware")){var contextAwarenessOptions=fluid.getForComponent(that,["options","contextAwareness"]);newContextAware=fluid.contextAware.check(that,contextAwarenessOptions);var lostGrade=fluid.find_if(rec.contextAware,(function(gradeName){return!fluid.contains(newContextAware,gradeName)}));if(lostGrade){fluid.fail("Failure operating contextAwareness definition ",contextAwarenessOptions," for component "+fluid.dumpComponentAndPath(that)+": grade name "+lostGrade+" returned by an earlier round of checks was lost through a context change caused by a raw dynamic grade")}rec.contextAware=newContextAware}return newContextAware};fluid.computeDynamicGrades=function(that,shadow,strategy){delete that.options.gradeNames;var gradeNames=fluid.driveStrategy(that.options,"gradeNames",strategy);gradeNames.length=0;var defaultsBlock=fluid.findMergeBlocks(shadow.mergeOptions.mergeBlocks,"defaults")[0];var rec={that:that,shadow:shadow,defaultsBlock:defaultsBlock,gradeNames:gradeNames,seenGrades:{},plainDynamic:[],contextAware:[],rawDynamic:[]};fluid.each(shadow.mergeOptions.mergeBlocks,(function(block){gradeNames.push.apply(gradeNames,fluid.makeArray(block.target&&block.target.gradeNames));fluid.applyDynamicGrades(rec)}));fluid.collectDistributedGrades(rec);var checkContextAware=true;while(true){while(rec.plainDynamic.length>0){gradeNames.push.apply(gradeNames,rec.plainDynamic);rec.plainDynamic.length=0;fluid.applyDynamicGrades(rec);fluid.collectDistributedGrades(rec)}if(checkContextAware){var newContextAware=fluid.accumulateContextAwareGrades(that,rec);rec.plainDynamic=rec.plainDynamic.concat(newContextAware);checkContextAware=false}else if(rec.rawDynamic.length>0){var expanded=fluid.expandImmediate(rec.rawDynamic.shift(),that,shadow.localRecord);if(typeof expanded==="function"){expanded=expanded()}if(expanded){rec.plainDynamic=rec.plainDynamic.concat(expanded)}checkContextAware=true}else{break}}fluid.remove_if(gradeNames,fluid.isReferenceOrExpander);if(shadow.collectedClearer){shadow.collectedClearer();delete shadow.collectedClearer}};fluid.computeDynamicComponentKey=function(recordKey,sourceKey){return recordKey+(sourceKey===0?"":"-"+sourceKey)};fluid.hasDynamicComponentCount=function(shadow,key){var hypos=key.indexOf("-");if(hypos!==-1){var recordKey=key.substring(0,hypos);return shadow.dynamicComponentCount!==undefined&&shadow.dynamicComponentCount[recordKey]!==undefined}};fluid.clearDynamicParentRecord=function(shadow,key){if(fluid.hasDynamicComponentCount(shadow,key)){var holder=fluid.get(shadow.that,["options","components"]);if(holder){delete holder[key]}}};fluid.registerDynamicRecord=function(that,recordKey,sourceKey,record,toCensor){var key=fluid.computeDynamicComponentKey(recordKey,sourceKey);var recordCopy=fluid.copy(record);delete recordCopy[toCensor];fluid.set(that.options,["components",key],recordCopy);return key};fluid.computeDynamicComponents=function(that,mergeOptions){var shadow=fluid.shadowForComponent(that);var localSub=shadow.subcomponentLocal={};var records=fluid.driveStrategy(that.options,"dynamicComponents",mergeOptions.strategy);fluid.each(records,(function(record,recordKey){if(!record.sources&&!record.createOnEvent){fluid.fail("Cannot process dynamicComponents record ",record,' without a "sources" or "createOnEvent" entry')}if(record.sources){var sources=fluid.expandOptions(record.sources,that);fluid.each(sources,(function(source,sourceKey){var key=fluid.registerDynamicRecord(that,recordKey,sourceKey,record,"sources");localSub[key]={source:source,sourcePath:sourceKey}}))}else if(record.createOnEvent){var event=fluid.event.expandOneEvent(that,record.createOnEvent);fluid.set(shadow,["dynamicComponentCount",recordKey],0);var listener=function(){var key=fluid.registerDynamicRecord(that,recordKey,shadow.dynamicComponentCount[recordKey]++,record,"createOnEvent");var localRecord={arguments:fluid.makeArray(arguments)};fluid.initDependent(that,key,localRecord)};event.addListener(listener);fluid.recordListener(event,listener,shadow)}}))};fluid.computeComponentAccessor=function(that,localRecord){var instantiator=fluid.globalInstantiator;var shadow=fluid.shadowForComponent(that);shadow.localRecord=localRecord;var options=that.options;var strategy=shadow.mergeOptions.strategy;var optionsStrategy=fluid.mountStrategy(["options"],options,strategy);shadow.invokerStrategy=fluid.recordStrategy(that,options,strategy,"invokers",fluid.invokerFromRecord);shadow.eventStrategyBlock=fluid.recordStrategy(that,options,strategy,"events",fluid.eventFromRecord,["events"]);var eventStrategy=fluid.mountStrategy(["events"],that,shadow.eventStrategyBlock.strategy,["events"]);shadow.memberStrategy=fluid.recordStrategy(that,options,strategy,"members",fluid.memberFromRecord,null,{model:true,modelRelay:true});shadow.getConfig={strategies:[fluid.model.funcResolverStrategy,fluid.makeGingerStrategy(that),optionsStrategy,shadow.invokerStrategy.strategy,shadow.memberStrategy.strategy,eventStrategy]};fluid.computeDynamicGrades(that,shadow,strategy,shadow.mergeOptions.mergeBlocks);fluid.distributeOptions(that,strategy);if(shadow.contextHash["fluid.resolveRoot"]){var memberName;if(shadow.contextHash["fluid.resolveRootSingle"]){var singleRootType=fluid.getForComponent(that,["options","singleRootType"]);if(!singleRootType){fluid.fail("Cannot register object with grades "+Object.keys(shadow.contextHash).join(", ")+" as fluid.resolveRootSingle since it has not defined option singleRootType")}memberName=fluid.typeNameToMemberName(singleRootType)}else{memberName=fluid.computeGlobalMemberName(that)}var parent=fluid.resolveRootComponent;if(parent[memberName]){instantiator.clearComponent(parent,memberName)}instantiator.recordKnownComponent(parent,that,memberName,false)}return shadow.getConfig};fluid.shadowForComponent=function(component){var instantiator=fluid.getInstantiator(component);return instantiator&&component?instantiator.idToShadow[component.id]:null};fluid.getForComponent=function(component,path){var shadow=fluid.shadowForComponent(component);var getConfig=shadow?shadow.getConfig:undefined;return fluid.get(component,path,getConfig)};fluid.makeGingerStrategy=function(that){var instantiator=fluid.getInstantiator(that);return function(component,thisSeg,index,segs){var atval=component[thisSeg];if(atval===fluid.inEvaluationMarker&&index===segs.length){fluid.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+thisSeg+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application')}if(index>1){return atval}if(atval===undefined&&component.hasOwnProperty(thisSeg)){return fluid.NO_VALUE}if(atval===undefined){var parentPath=instantiator.idToShadow[component.id].path;var childPath=instantiator.composePath(parentPath,thisSeg);atval=instantiator.pathToComponent[childPath]}if(atval===undefined){var subRecord=fluid.getForComponent(component,["options","components",thisSeg]);if(subRecord){if(subRecord.createOnEvent){fluid.fail('Error resolving path segment "'+thisSeg+'" of path '+segs.join(".")+" since component with record ",subRecord,' has annotation "createOnEvent" - this very likely represents an implementation error. Either alter the reference so it does not '+" match this component, or alter your workflow to ensure that the component is instantiated by the time this reference resolves")}fluid.initDependent(component,thisSeg);atval=component[thisSeg]}}return atval}};fluid.frameworkGrades=["fluid.component","fluid.modelComponent","fluid.viewComponent","fluid.rendererComponent"];fluid.filterBuiltinGrades=function(gradeNames){return fluid.remove_if(fluid.makeArray(gradeNames),(function(gradeName){return fluid.frameworkGrades.indexOf(gradeName)!==-1}))};fluid.dumpGradeNames=function(that){return that.options&&that.options.gradeNames?" gradeNames: "+JSON.stringify(fluid.filterBuiltinGrades(that.options.gradeNames)):""};fluid.dumpThat=function(that){return'{ typeName: "'+that.typeName+'"'+fluid.dumpGradeNames(that)+" id: "+that.id+"}"};fluid.dumpThatStack=function(thatStack,instantiator){var togo=fluid.transform(thatStack,(function(that){var path=instantiator.idToPath(that.id);return fluid.dumpThat(that)+(path?" - path: "+path:"")}));return togo.join("\n")};fluid.dumpComponentPath=function(that){var path=fluid.pathForComponent(that);return path?fluid.pathUtil.composeSegments(path):"** no path registered for component **"};fluid.resolveContext=function(context,that,fast){if(context==="that"){return that}if(typeof context==="object"){var innerContext=fluid.resolveContext(context.context,that,fast);if(!fluid.isComponent(innerContext)){fluid.triggerMismatchedPathError(context.context,that)}var rawValue=fluid.getForComponent(innerContext,context.path);var expanded=fluid.expandOptions(rawValue,that);if(!fluid.isComponent(expanded)){fluid.fail("Unable to resolve recursive context expression "+fluid.renderContextReference(context)+": the directly resolved value of "+rawValue+" did not resolve to a component in the scope of component ",that,": got ",expanded)}return expanded}else{var foundComponent;var instantiator=fluid.globalInstantiator;if(fast){var shadow=instantiator.idToShadow[that.id];return shadow.ownScope[context]}else{var thatStack=instantiator.getFullStack(that);fluid.visitComponentsForVisibility(instantiator,thatStack,(function(component,name){var shadow=fluid.shadowForComponent(component);if(context===name||shadow&&shadow.contextHash&&shadow.contextHash[context]||context===component.typeName){foundComponent=component;return true}if(fluid.getForComponent(component,["options","components",context])&&!component[context]){foundComponent=fluid.getForComponent(component,context);return true}}));return foundComponent}}};fluid.triggerMismatchedPathError=function(parsed,parentThat){var ref=fluid.renderContextReference(parsed);fluid.fail("Failed to resolve reference "+ref+" - could not match context with name "+parsed.context+" from component "+fluid.dumpThat(parentThat)+" at path "+fluid.dumpComponentPath(parentThat)+" component: ",parentThat)};fluid.makeStackFetcher=function(parentThat,localRecord,fast){var fetcher=function(parsed){if(parentThat&&parentThat.lifecycleStatus==="destroyed"){fluid.fail("Cannot resolve reference "+fluid.renderContextReference(parsed)+" from component "+fluid.dumpThat(parentThat)+" which has been destroyed")}var context=parsed.context;if(localRecord&&context in localRecord){return fluid.get(localRecord[context],parsed.path)}var foundComponent=fluid.resolveContext(context,parentThat,fast);if(!foundComponent&&parsed.path!==""){fluid.triggerMismatchedPathError(parsed,parentThat)}return fluid.getForComponent(foundComponent,parsed.path)};return fetcher};fluid.makeStackResolverOptions=function(parentThat,localRecord,fast){return $.extend(fluid.copy(fluid.rawDefaults("fluid.makeExpandOptions")),{ELstyle:"{}",localRecord:localRecord||{},fetcher:fluid.makeStackFetcher(parentThat,localRecord,fast),contextThat:parentThat,exceptions:{members:{model:true,modelRelay:true}}})};fluid.clearListeners=function(shadow){fluid.each(shadow.listeners,(function(rec){rec.event.removeListener(rec.listenerId||rec.listener)}));delete shadow.listeners};fluid.recordListener=function(event,listener,shadow,listenerId){if(event.ownerId!==shadow.that.id){fluid.pushArray(shadow,"listeners",{event:event,listener:listener,listenerId:listenerId})}};fluid.constructScopeObjects=function(instantiator,parent,child,childShadow){var parentShadow=parent?instantiator.idToShadow[parent.id]:null;childShadow.childrenScope=parentShadow?Object.create(parentShadow.ownScope):{};childShadow.ownScope=Object.create(childShadow.childrenScope);childShadow.parentShadow=parentShadow};fluid.clearChildrenScope=function(instantiator,parentShadow,child,childShadow){fluid.each(childShadow.contextHash,(function(troo,context){if(parentShadow.childrenScope[context]===child){delete parentShadow.childrenScope[context]}}))};fluid.instantiator=function(){var that=fluid.typeTag("instantiator");$.extend(that,{lifecycleStatus:"constructed",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:fluid.model.composePath,composeSegments:fluid.model.composeSegments,parseEL:fluid.model.parseEL,events:{onComponentAttach:fluid.makeEventFirer({name:"instantiator's onComponentAttach event"}),onComponentClear:fluid.makeEventFirer({name:"instantiator's onComponentClear event"})}});that.idToPath=function(id){var shadow=that.idToShadow[id];return shadow?shadow.path:""};that.getThatStack=function(component){var shadow=that.idToShadow[component.id];if(shadow){var path=shadow.path;var parsed=that.parseEL(path);var root=that.pathToComponent[""],togo=[];for(var i=0;i<parsed.length;++i){root=root[parsed[i]];togo.push(root)}return togo}else{return[]}};that.getFullStack=function(component){var thatStack=component?that.getThatStack(component):[];thatStack.unshift(fluid.resolveRootComponent);return thatStack};function recordComponent(parent,component,path,name,created){var shadow;if(created){shadow=that.idToShadow[component.id]={};shadow.that=component;shadow.path=path;shadow.memberName=name;fluid.constructScopeObjects(that,parent,component,shadow)}else{shadow=that.idToShadow[component.id];shadow.injectedPaths=shadow.injectedPaths||{};shadow.injectedPaths[path]=true;var parentShadow=that.idToShadow[parent.id];var keys=fluid.keys(shadow.contextHash);fluid.remove_if(keys,(function(key){return shadow.contextHash&&shadow.contextHash[key]==="memberName"}));keys.push(name);fluid.each(keys,(function(context){if(!parentShadow.childrenScope[context]){parentShadow.childrenScope[context]=component}}))}if(that.pathToComponent[path]){fluid.fail("Error during instantiation - path "+path+" which has just created component "+fluid.dumpThat(component)+" has already been used for component "+fluid.dumpThat(that.pathToComponent[path])+" - this is a circular instantiation or other oversight."+" Please clear the component using instantiator.clearComponent() before reusing the path.")}that.pathToComponent[path]=component}that.recordRoot=function(component){recordComponent(null,component,"","",true)};that.recordKnownComponent=function(parent,component,name,created){parent[name]=component;if(fluid.isComponent(component)||component.type==="instantiator"){var parentPath=that.idToShadow[parent.id].path;var path=that.composePath(parentPath,name);recordComponent(parent,component,path,name,created);that.events.onComponentAttach.fire(component,path,that,created)}else{fluid.fail("Cannot record non-component with value ",component,' at path "'+name+'" of parent ',parent)}};that.clearConcreteComponent=function(destroyRec){fluid.each(destroyRec.childShadow.injectedPaths,(function(troo,injectedPath){var parentPath=fluid.model.getToTailPath(injectedPath);var otherParent=that.pathToComponent[parentPath];that.clearComponent(otherParent,fluid.model.getTailPath(injectedPath),destroyRec.child)}));fluid.clearDistributions(destroyRec.childShadow);fluid.clearListeners(destroyRec.childShadow);fluid.clearDynamicParentRecord(destroyRec.shadow,destroyRec.name);fluid.fireEvent(destroyRec.child,"afterDestroy",[destroyRec.child,destroyRec.name,destroyRec.component]);delete that.idToShadow[destroyRec.child.id]};that.clearComponent=function(component,name,child,options,nested,path){var shadow=that.idToShadow[component.id];options=options||{flat:true,instantiator:that,destroyRecs:[]};child=child||component[name];path=path||shadow.path;if(path===undefined){fluid.fail("Cannot clear component "+name+" from component ",component," which was not created by this instantiator")}var childPath=that.composePath(path,name);var childShadow=that.idToShadow[child.id];if(!childShadow){return}var created=childShadow.path===childPath;that.events.onComponentClear.fire(child,childPath,component,created);if(created){fluid.visitComponentChildren(child,(function(gchild,gchildname,segs,i){var parentPath=that.composeSegments.apply(null,segs.slice(0,i));that.clearComponent(child,gchildname,null,options,true,parentPath)}),options,that.parseEL(childPath));fluid.doDestroy(child,name,component);options.destroyRecs.push({child:child,childShadow:childShadow,name:name,component:component,shadow:shadow})}else{fluid.remove_if(childShadow.injectedPaths,(function(troo,path){return path===childPath}))}fluid.clearChildrenScope(that,shadow,child,childShadow);delete that.pathToComponent[childPath];if(!nested){delete component[name];fluid.each(options.destroyRecs,that.clearConcreteComponent)}};return that};fluid.globalInstantiator=fluid.instantiator();fluid.getInstantiator=function(component){var instantiator=fluid.globalInstantiator;return component&&instantiator.idToShadow[component.id]?instantiator:null};fluid.defaults("fluid.resolveRoot");fluid.defaults("fluid.resolveRootSingle",{gradeNames:"fluid.resolveRoot"});fluid.constructRootComponents=function(instantiator){fluid.rootComponent=instantiator.rootComponent=fluid.typeTag("fluid.rootComponent");instantiator.recordRoot(fluid.rootComponent);fluid.resolveRootComponent=instantiator.resolveRootComponent=fluid.typeTag("fluid.resolveRootComponent");instantiator.recordKnownComponent(fluid.rootComponent,fluid.resolveRootComponent,"resolveRootComponent",true);var rootShadow=instantiator.idToShadow[fluid.rootComponent.id];rootShadow.contextHash={};var resolveRootShadow=instantiator.idToShadow[fluid.resolveRootComponent.id];resolveRootShadow.ownScope=rootShadow.ownScope;resolveRootShadow.childrenScope=rootShadow.childrenScope;instantiator.recordKnownComponent(fluid.resolveRootComponent,instantiator,"instantiator",true);resolveRootShadow.childrenScope.instantiator=instantiator};fluid.constructRootComponents(fluid.globalInstantiator);fluid.expandOptions=function(args,that,mergePolicy,localRecord,outerExpandOptions){if(!args){return args}fluid.pushActivity("expandOptions","expanding options %args for component %that ",{that:that,args:args});var expandOptions=fluid.makeStackResolverOptions(that,localRecord);expandOptions.mergePolicy=mergePolicy;expandOptions.defer=outerExpandOptions&&outerExpandOptions.defer;var expanded=expandOptions.defer?fluid.makeExpandOptions(args,expandOptions):fluid.expand(args,expandOptions);fluid.popActivity();return expanded};fluid.localRecordExpected=fluid.arrayToHash(["type","options","container","createOnEvent","priority","recordType"]);fluid.checkComponentRecord=function(localRecord){fluid.each(localRecord,(function(value,key){if(!fluid.localRecordExpected[key]){fluid.fail("Probable error in subcomponent record ",localRecord,' - key "'+key+'" found, where the only legal options are '+fluid.keys(fluid.localRecordExpected).join(", "))}}))};fluid.mergeRecordsToList=function(that,mergeRecords){var list=[];fluid.each(mergeRecords,(function(value,key){value.recordType=key;if(key==="distributions"){list.push.apply(list,fluid.transform(value,(function(distributedBlock){return fluid.computeDistributionPriority(that,distributedBlock)})))}else{if(!value.options){return}value.priority=fluid.mergeRecordTypes[key];if(value.priority===undefined){fluid.fail("Merge record with unrecognised type "+key+": ",value)}list.push(value)}}));return list};var addPolicyBuiltins=function(policy){fluid.each(["gradeNames","mergePolicy","argumentMap","components","dynamicComponents","events","listeners","modelListeners","modelRelay","distributeOptions","transformOptions"],(function(key){fluid.set(policy,[key,"*","noexpand"],true)}));return policy};fluid.generateExpandBlock=function(record,that,mergePolicy,localRecord){var expanded=fluid.expandOptions(record.options,record.contextThat||that,mergePolicy,localRecord,{defer:true});expanded.priority=record.priority;expanded.namespace=record.namespace;expanded.recordType=record.recordType;return expanded};var expandComponentOptionsImpl=function(mergePolicy,defaults,initRecord,that){var defaultCopy=fluid.copy(defaults);addPolicyBuiltins(mergePolicy);var shadow=fluid.shadowForComponent(that);shadow.mergePolicy=mergePolicy;var mergeRecords={defaults:{options:defaultCopy}};$.extend(mergeRecords,initRecord.mergeRecords);if(mergeRecords.subcomponentRecord){fluid.checkComponentRecord(mergeRecords.subcomponentRecord)}var expandList=fluid.mergeRecordsToList(that,mergeRecords);var togo=fluid.transform(expandList,(function(value){return fluid.generateExpandBlock(value,that,mergePolicy,initRecord.localRecord)}));return togo};fluid.fabricateDestroyMethod=function(that,name,instantiator,child){return function(){instantiator.clearComponent(that,name,child)}};fluid.computeGlobalMemberName=function(that){var nickName=fluid.computeNickName(that.typeName);return nickName+"-"+that.id};fluid.typeNameToMemberName=function(typeName){return typeName.replace(/\./g,"_")};fluid.expandComponentOptions=function(mergePolicy,defaults,userOptions,that){var initRecord=userOptions;var instantiator=userOptions&&userOptions.marker===fluid.EXPAND?userOptions.instantiator:null;fluid.pushActivity("expandComponentOptions","expanding component options %options with record %record for component %that",{options:instantiator?userOptions.mergeRecords.user:userOptions,record:initRecord,that:that});if(!instantiator){instantiator=fluid.globalInstantiator;initRecord={mergeRecords:{user:{options:fluid.expandCompact(userOptions,true)}},memberName:fluid.computeGlobalMemberName(that),instantiator:instantiator,parentThat:fluid.rootComponent}}that.destroy=fluid.fabricateDestroyMethod(initRecord.parentThat,initRecord.memberName,instantiator,that);instantiator.recordKnownComponent(initRecord.parentThat,that,initRecord.memberName,true);var togo=expandComponentOptionsImpl(mergePolicy,defaults,initRecord,that);fluid.popActivity();return togo};fluid.assembleCreatorArguments=function(parentThat,typeName,options){var upDefaults=fluid.defaults(typeName);if(!upDefaults||!upDefaults.argumentMap){fluid.fail("Error in assembleCreatorArguments: cannot look up component type name "+typeName+" to a component creator grade with an argumentMap")}var fakeThat={};var distributions=parentThat?fluid.receiveDistributions(parentThat,upDefaults.gradeNames,options.memberName,fakeThat):[];fluid.each(distributions,(function(distribution){fluid.computeDistributionPriority(parentThat,distribution);if(fluid.isPrimitive(distribution.priority)){distribution.priority=fluid.parsePriority(distribution.priority,0,false,"options distribution")}}));fluid.sortByPriority(distributions);var localRecord=$.extend({},fluid.censorKeys(options.componentRecord,["type"]),options.localRecord);var argMap=upDefaults.argumentMap;var findKeys=Object.keys(argMap).concat(["type"]);fluid.each(findKeys,(function(name){for(var i=0;i<distributions.length;++i){if(distributions[i][name]!==undefined){localRecord[name]=distributions[i][name]}}}));typeName=localRecord.type||typeName;delete localRecord.type;delete localRecord.options;var mergeRecords={distributions:distributions};if(options.componentRecord!==undefined){mergeRecords.subcomponentRecord=$.extend({},options.componentRecord)}var args=[];fluid.each(argMap,(function(index,name){var arg;if(name==="options"){arg={marker:fluid.EXPAND,localRecord:localRecord,mergeRecords:mergeRecords,instantiator:fluid.getInstantiator(parentThat),parentThat:parentThat,memberName:options.memberName}}else{var value=localRecord[name];arg=fluid.expandImmediate(value,parentThat,localRecord)}args[index]=arg}));var togo={args:args,funcName:typeName};return togo};fluid.initDependent=function(that,name,localRecord){if(that[name]){return}var component=that.options.components[name];var instance;var instantiator=fluid.globalInstantiator;var shadow=instantiator.idToShadow[that.id];localRecord=localRecord||shadow.subcomponentLocal&&shadow.subcomponentLocal[name];fluid.pushActivity("initDependent",'instantiating dependent component at path "%path" with record %record as child of %parent',{path:shadow.path+"."+name,record:component,parent:that});if(typeof component==="string"||component.expander){that[name]=fluid.inEvaluationMarker;instance=fluid.expandImmediate(component,that);if(instance){instantiator.recordKnownComponent(that,instance,name,false)}else{delete that[name]}}else if(component.type){var type=fluid.expandImmediate(component.type,that,localRecord);if(!type){fluid.fail("Error in subcomponent record: ",component.type," could not be resolved to a type for component ",name," of parent ",that)}var invokeSpec=fluid.assembleCreatorArguments(that,type,{componentRecord:component,memberName:name,localRecord:localRecord});instance=fluid.initSubcomponentImpl(that,{type:invokeSpec.funcName},invokeSpec.args)}else{fluid.fail("Unrecognised material in place of subcomponent "+name+' - no "type" field found')}fluid.popActivity();return instance};fluid.bindDeferredComponent=function(that,componentName,component){var events=fluid.makeArray(component.createOnEvent);fluid.each(events,(function(eventName){var event=fluid.isIoCReference(eventName)?fluid.expandOptions(eventName,that):that.events[eventName];if(!event||!event.addListener){fluid.fail("Error instantiating createOnEvent component with name "+componentName+" of parent ",that," since event specification "+eventName+" could not be expanded to an event - got ",event)}event.addListener((function(){fluid.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:componentName,that:that,eventName:eventName});if(that[componentName]){fluid.globalInstantiator.clearComponent(that,componentName)}var localRecord={arguments:fluid.makeArray(arguments)};fluid.initDependent(that,componentName,localRecord);fluid.popActivity()}),null,component.priority)}))};fluid.priorityForComponent=function(component){return component.priority?component.priority:component.type==="fluid.typeFount"||fluid.hasGrade(fluid.defaults(component.type),"fluid.typeFount")?"first":undefined};fluid.initDependents=function(that){fluid.pushActivity("initDependents","instantiating dependent components for component %that",{that:that});var shadow=fluid.shadowForComponent(that);shadow.memberStrategy.initter();shadow.invokerStrategy.initter();fluid.getForComponent(that,"modelRelay");fluid.getForComponent(that,"model");if(fluid.isDestroyed(that)){return}var options=that.options;var components=options.components||{};var componentSort=[];fluid.each(components,(function(component,name){if(!component.createOnEvent){var priority=fluid.priorityForComponent(component);componentSort.push({namespace:name,priority:fluid.parsePriority(priority)})}else{fluid.bindDeferredComponent(that,name,component)}}));fluid.sortByPriority(componentSort);fluid.each(componentSort,(function(entry){fluid.initDependent(that,entry.namespace)}));if(shadow.subcomponentLocal){fluid.clear(shadow.subcomponentLocal)}that.lifecycleStatus="constructed";fluid.assessTreeConstruction(that,shadow);fluid.popActivity()};fluid.assessTreeConstruction=function(that,shadow){var instantiator=fluid.globalInstantiator;var thatStack=instantiator.getThatStack(that);var unstableUp=fluid.find_if(thatStack,(function(that){return that.lifecycleStatus==="constructing"}));if(unstableUp){that.lifecycleStatus="constructed"}else{fluid.markSubtree(instantiator,that,shadow.path,"treeConstructed")}};fluid.markSubtree=function(instantiator,that,path,state){that.lifecycleStatus=state;fluid.visitComponentChildren(that,(function(child,name){var childPath=instantiator.composePath(path,name);var childShadow=instantiator.idToShadow[child.id];var created=childShadow&&childShadow.path===childPath;if(created){fluid.markSubtree(instantiator,child,childPath,state)}}),{flat:true})};fluid.pathForComponent=function(component,instantiator){instantiator=instantiator||fluid.getInstantiator(component)||fluid.globalInstantiator;var shadow=instantiator.idToShadow[component.id];if(!shadow){return null}return instantiator.parseEL(shadow.path)};fluid.construct=function(path,options,instantiator){var record=fluid.destroy(path,instantiator);fluid.set(record.parent,["options","components",record.memberName],{type:options.type,options:options});return fluid.initDependent(record.parent,record.memberName)};fluid.destroy=function(path,instantiator){instantiator=instantiator||fluid.globalInstantiator;var segs=fluid.model.parseToSegments(path,instantiator.parseEL,true);if(segs.length===0){fluid.fail("Cannot destroy the root component")}var memberName=segs.pop(),parentPath=instantiator.composeSegments.apply(null,segs);var parent=instantiator.pathToComponent[parentPath];if(!parent){fluid.fail("Cannot modify component with nonexistent parent at path ",path)}if(parent[memberName]){parent[memberName].destroy()}return{parent:parent,memberName:memberName}};fluid.constructSingle=function(parentPath,options,instantiator){instantiator=instantiator||fluid.globalInstantiator;parentPath=parentPath||"";var segs=fluid.model.parseToSegments(parentPath,instantiator.parseEL,true);if(typeof options==="string"){options={type:options}}var type=options.type;if(!type){fluid.fail("Cannot construct singleton object without a type entry")}options=$.extend({},options);var gradeNames=options.gradeNames=fluid.makeArray(options.gradeNames);gradeNames.unshift(type);options.type="fluid.component";var root=segs.length===0;if(root){gradeNames.push("fluid.resolveRoot")}var memberName=fluid.typeNameToMemberName(options.singleRootType||type);segs.push(memberName);fluid.construct(segs,options,instantiator)};fluid.destroySingle=function(parentPath,typeName,instantiator){instantiator=instantiator||fluid.globalInstantiator;var segs=fluid.model.parseToSegments(parentPath,instantiator.parseEL,true);var memberName=fluid.typeNameToMemberName(typeName);segs.push(memberName);fluid.destroy(segs,instantiator)};fluid.makeGradeLinkage=function(linkageName,inputNames,outputNames){fluid.defaults(linkageName,{gradeNames:"fluid.component",distributeOptions:{record:outputNames,target:"{/ "+inputNames.join("&")+"}.options.gradeNames"}});fluid.constructSingle([],linkageName)};fluid.componentForPath=function(path){return fluid.globalInstantiator.pathToComponent[fluid.isArrayable(path)?path.join("."):path]};fluid["debugger"]=function(){debugger};fluid.defaults("fluid.debuggingProbe",{gradeNames:["fluid.component"]});fluid.probeToDistribution=function(probe){var instantiator=fluid.globalInstantiator;var parsed=fluid.parseContextReference(probe.target);var segs=fluid.model.parseToSegments(parsed.path,instantiator.parseEL,true);if(segs[0]!=="options"){segs.unshift("options")}var parsedPriority=fluid.parsePriority(probe.priority);if(parsedPriority.constraint&&!parsedPriority.constraint.target){parsedPriority.constraint.target="authoring"}return{target:"{/ "+parsed.context+"}."+instantiator.composeSegments.apply(null,segs),record:{func:probe.func,funcName:probe.funcName,args:probe.args,priority:fluid.renderPriority(parsedPriority)}}};fluid.registerProbes=function(probes){var probeDistribution=fluid.transform(probes,fluid.probeToDistribution);var memberName="fluid_debuggingProbe_"+fluid.allocateGuid();fluid.construct([memberName],{type:"fluid.debuggingProbe",distributeOptions:probeDistribution});return memberName};fluid.deregisterProbes=function(probeName){fluid.destroy([probeName])};fluid.thisistToApplicable=function(record,recthis,that){return{apply:function(noThis,args){var resolvedThis=fluid.expandOptions(recthis,that);if(typeof resolvedThis==="string"){resolvedThis=fluid.getGlobalValue(resolvedThis)}if(!resolvedThis){fluid.fail("Could not resolve reference "+recthis+" to a value")}var resolvedFunc=resolvedThis[record.method];if(typeof resolvedFunc!=="function"){fluid.fail("Object ",resolvedThis," at reference "+recthis+" has no member named "+record.method+" which is a function ")}if(fluid.passLogLevel(fluid.logLevel.TRACE)){fluid.log(fluid.logLevel.TRACE,"Applying arguments ",args," to method "+record.method+" of instance ",resolvedThis)}return resolvedFunc.apply(resolvedThis,args)}}};fluid.changeToApplicable=function(record,that){return{apply:function(noThis,args,localRecord,mergeRecord){var parsed=fluid.parseValidModelReference(that,"changePath listener record",record.changePath);var value=fluid.expandOptions(record.value,that,{},fluid.extend(localRecord,{arguments:args}));var sources=mergeRecord&&mergeRecord.source&&mergeRecord.source.length?fluid.makeArray(record.source).concat(mergeRecord.source):record.source;parsed.applier.change(parsed.modelSegs,value,record.type,sources)}}};fluid.recordToApplicable=function(record,that,standard){if(record.changePath!==undefined){return fluid.changeToApplicable(record,that,standard)}var recthis=record["this"];if(record.method^recthis){fluid.fail("Record ",that,' must contain both entries "method" and "this" if it contains either')}return record.method?fluid.thisistToApplicable(record,recthis,that):null};fluid.getGlobalValueNonComponent=function(funcName,context){var defaults=fluid.defaults(funcName);if(defaults&&fluid.hasGrade(defaults,"fluid.component")){fluid.fail("Error in function specification - cannot invoke function "+funcName+" in the context of "+context+": component creator functions can only be used as subcomponents")}return fluid.getGlobalValue(funcName)};fluid.makeInvoker=function(that,invokerec,name){invokerec=fluid.upgradePrimitiveFunc(invokerec);if(invokerec.args!==undefined&&invokerec.args!==fluid.NO_VALUE&&!fluid.isArrayable(invokerec.args)){invokerec.args=fluid.makeArray(invokerec.args)}var func=fluid.recordToApplicable(invokerec,that);var invokePre=fluid.preExpand(invokerec.args);var localRecord={};var expandOptions=fluid.makeStackResolverOptions(that,localRecord,true);func=func||(invokerec.funcName?fluid.getGlobalValueNonComponent(invokerec.funcName,"an invoker"):fluid.expandImmediate(invokerec.func,that));if(!func||!func.apply){fluid.fail("Error in invoker record: could not resolve members func, funcName or method to a function implementation - got "+func+" from ",invokerec)}else if(func===fluid.notImplemented){fluid.fail("Error constructing component ",that," - the invoker named "+name+" which was defined in grade "+invokerec.componentSource+" needs to be overridden with a concrete implementation")}return function invokeInvoker(){if(fluid.defeatLogging===false){fluid.pushActivity("invokeInvoker","invoking invoker with name %name and record %record from path %path holding component %that",{name:name,record:invokerec,path:fluid.dumpComponentPath(that),that:that})}var togo,finalArgs;if(that.lifecycleStatus==="destroyed"){fluid.log(fluid.logLevel.WARN,"Ignoring call to invoker "+name+" of component ",that," which has been destroyed")}else{localRecord.arguments=arguments;if(invokerec.args===undefined||invokerec.args===fluid.NO_VALUE){finalArgs=arguments}else{fluid.expandImmediateImpl(invokePre,expandOptions);finalArgs=invokePre.source}togo=func.apply(null,finalArgs)}if(fluid.defeatLogging===false){fluid.popActivity()}return togo}};fluid.event.makeTrackedListenerAdder=function(source){var shadow=fluid.shadowForComponent(source);return function(event){return{addListener:function(listener,namespace,priority,softNamespace,listenerId){fluid.recordListener(event,listener,shadow,listenerId);event.addListener.apply(null,arguments)}}}};fluid.event.listenerEngine=function(eventSpec,callback,adder){var argstruc={};function checkFire(){var notall=fluid.find(eventSpec,(function(value,key){if(argstruc[key]===undefined){return true}}));if(!notall){var oldstruc=argstruc;argstruc={};callback(oldstruc)}}fluid.each(eventSpec,(function(event,eventName){adder(event).addListener((function(){argstruc[eventName]=fluid.makeArray(arguments);checkFire()}))}))};fluid.event.dispatchListener=function(that,listener,eventName,eventSpec,wrappedArgs){if(eventSpec.args!==undefined&&eventSpec.args!==fluid.NO_VALUE&&!fluid.isArrayable(eventSpec.args)){eventSpec.args=fluid.makeArray(eventSpec.args)}listener=fluid.event.resolveListener(listener);var dispatchPre=fluid.preExpand(eventSpec.args);var localRecord={};var expandOptions=fluid.makeStackResolverOptions(that,localRecord,true);var togo=function(){if(fluid.defeatLogging===false){fluid.pushActivity("dispatchListener","firing to listener to event named %eventName of component %that",{eventName:eventName,that:that})}var args=wrappedArgs?arguments[0]:arguments,finalArgs;localRecord.arguments=args;if(eventSpec.args!==undefined&&eventSpec.args!==fluid.NO_VALUE){fluid.expandImmediateImpl(dispatchPre,expandOptions);finalArgs=dispatchPre.source}else{finalArgs=args}var togo=listener.apply(null,finalArgs);if(fluid.defeatLogging===false){fluid.popActivity()}return togo};fluid.event.impersonateListener(listener,togo);return togo};fluid.event.resolveSoftNamespace=function(key){if(typeof key!=="string"){return null}else{var lastpos=Math.max(key.lastIndexOf("."),key.lastIndexOf("}"));return key.substring(lastpos+1)}};fluid.event.resolveListenerRecord=function(lisrec,that,eventName,namespace,standard){var badRec=function(record,extra){fluid.fail("Error in listener record - could not resolve reference ",record," to a listener or firer. "+'Did you miss out "events." when referring to an event firer?'+extra)};fluid.pushActivity("resolveListenerRecord","resolving listener record for event named %eventName for component %that",{eventName:eventName,that:that});var records=fluid.makeArray(lisrec);var transRecs=fluid.transform(records,(function(record){var expanded=fluid.isPrimitive(record)||record.expander?{listener:record}:fluid.copy(record);var methodist=fluid.recordToApplicable(record,that,standard);if(methodist){expanded.listener=methodist}else{expanded.listener=expanded.listener||expanded.func||expanded.funcName}if(!expanded.listener){badRec(record,' Listener record must contain a member named "listener", "func", "funcName" or "method"')}var softNamespace=record.method?fluid.event.resolveSoftNamespace(record["this"])+"."+record.method:fluid.event.resolveSoftNamespace(expanded.listener);if(!expanded.namespace&&!namespace&&softNamespace){expanded.softNamespace=true;expanded.namespace=(record.componentSource?record.componentSource:that.typeName)+"."+softNamespace}var listener=expanded.listener=fluid.expandOptions(expanded.listener,that);if(!listener){badRec(record,"")}var firer=false;if(listener.typeName==="fluid.event.firer"){listener=listener.fire;firer=true}expanded.listener=standard&&(expanded.args&&listener!=="fluid.notImplemented"||firer)?fluid.event.dispatchListener(that,listener,eventName,expanded):listener;expanded.listenerId=fluid.allocateGuid();return expanded}));var togo={records:transRecs,adderWrapper:standard?fluid.event.makeTrackedListenerAdder(that):null};fluid.popActivity();return togo};fluid.event.expandOneEvent=function(that,event){var origin;if(typeof event==="string"&&event.charAt(0)!=="{"){origin=fluid.getForComponent(that,["events",event])}else{origin=fluid.expandOptions(event,that)}if(!origin||origin.typeName!=="fluid.event.firer"){fluid.fail("Error in event specification - could not resolve base event reference ",event," to an event firer: got ",origin)}return origin};fluid.event.expandEvents=function(that,event){return typeof event==="string"?fluid.event.expandOneEvent(that,event):fluid.transform(event,(function(oneEvent){return fluid.event.expandOneEvent(that,oneEvent)}))};fluid.event.resolveEvent=function(that,eventName,eventSpec){fluid.pushActivity("resolveEvent","resolving event with name %eventName attached to component %that",{eventName:eventName,that:that});var adder=fluid.event.makeTrackedListenerAdder(that);if(typeof eventSpec==="string"){eventSpec={event:eventSpec}}var event=eventSpec.typeName==="fluid.event.firer"?eventSpec:eventSpec.event||eventSpec.events;if(!event){fluid.fail("Event specification for event with name "+eventName+" does not include a base event specification: ",eventSpec)}var origin=event.typeName==="fluid.event.firer"?event:fluid.event.expandEvents(that,event);var isMultiple=origin.typeName!=="fluid.event.firer";var isComposite=eventSpec.args||isMultiple;var firer;if(isComposite){firer=fluid.makeEventFirer({name:" [composite] "+fluid.event.nameEvent(that,eventName)});var dispatcher=fluid.event.dispatchListener(that,firer.fire,eventName,eventSpec,isMultiple);if(isMultiple){fluid.event.listenerEngine(origin,dispatcher,adder)}else{adder(origin).addListener(dispatcher)}}else{firer={typeName:"fluid.event.firer"};firer.fire=function(){var outerArgs=fluid.makeArray(arguments);fluid.pushActivity("fireSynthetic","firing synthetic event %eventName ",{eventName:eventName});var togo=origin.fire.apply(null,outerArgs);fluid.popActivity();return togo};firer.addListener=function(listener,namespace,priority,softNamespace,listenerId){var dispatcher=fluid.event.dispatchListener(that,listener,eventName,eventSpec);adder(origin).addListener(dispatcher,namespace,priority,softNamespace,listenerId)};firer.removeListener=function(listener){origin.removeListener(listener)};firer.originEvent=origin}fluid.popActivity();return firer};fluid.withEnvironment=function(envAdd,func,root){var key;root=root||fluid.globalThreadLocal();try{for(key in envAdd){root[key]=envAdd[key]}$.extend(root,envAdd);return func()}finally{for(key in envAdd){delete root[key]}}};fluid.fetchContextReference=function(parsed,directModel,env,elResolver,externalFetcher){if(elResolver){parsed=elResolver(parsed,env)}var base=parsed.context?env[parsed.context]:directModel;if(!base){var resolveExternal=externalFetcher&&externalFetcher(parsed);return resolveExternal||base}return parsed.noDereference?parsed.path:fluid.get(base,parsed.path)};fluid.makeEnvironmentFetcher=function(directModel,elResolver,envGetter,externalFetcher){envGetter=envGetter||fluid.globalThreadLocal;return function(parsed){var env=envGetter();return fluid.fetchContextReference(parsed,directModel,env,elResolver,externalFetcher)}};fluid.coerceToPrimitive=function(string){return string==="false"?false:string==="true"?true:isFinite(string)?Number(string):string};fluid.compactStringToRec=function(string,type){var openPos=string.indexOf("(");var closePos=string.indexOf(")");if(openPos===-1^closePos===-1||openPos>closePos){fluid.fail("Badly-formed compact "+type+" record without matching parentheses: "+string)}if(openPos!==-1&&closePos!==-1){var trail=string.substring(closePos+1);if(trail.trim()!==""){fluid.fail("Badly-formed compact "+type+" record "+string+" - unexpected material following close parenthesis: "+trail)}var prefix=string.substring(0,openPos);var body=string.substring(openPos+1,closePos).trim();var args=body===""?[]:fluid.transform(body.split(","),(function(str){return str.trim()}),fluid.coerceToPrimitive);var togo=fluid.upgradePrimitiveFunc(prefix,null);togo.args=args;return togo}else if(type==="expander"){fluid.fail("Badly-formed compact expander record without parentheses: "+string)}return string};fluid.expandPrefix="@expand:";fluid.expandCompactString=function(string,active){var rec=string;if(string.indexOf(fluid.expandPrefix)===0){var rem=string.substring(fluid.expandPrefix.length);rec={expander:fluid.compactStringToRec(rem,"expander")}}else if(active){rec=fluid.compactStringToRec(string,active)}return rec};var singularPenRecord={listeners:"listener",modelListeners:"modelListener"};var singularRecord=$.extend({invokers:"invoker"},singularPenRecord);fluid.expandCompactRec=function(segs,target,source){fluid.guardCircularExpansion(segs,segs.length);var pen=segs.length>0?segs[segs.length-1]:"";var active=singularRecord[pen];if(!active&&segs.length>1){active=singularPenRecord[segs[segs.length-2]]}fluid.each(source,(function(value,key){if(fluid.isPlainObject(value)){target[key]=fluid.freshContainer(value);segs.push(key);fluid.expandCompactRec(segs,target[key],value);segs.pop();return}else if(typeof value==="string"){value=fluid.expandCompactString(value,active)}target[key]=value}))};fluid.expandCompact=function(options){var togo={};fluid.expandCompactRec([],togo,options);return togo};fluid.extractEL=function(string,options){if(options.ELstyle==="ALL"||options.ELstyle==="{}"){return string}else if(options.ELstyle.length===1){if(string.charAt(0)===options.ELstyle){return string.substring(1)}}else if(options.ELstyle==="${}"){var i1=string.indexOf("${");var i2=string.lastIndexOf("}");if(i1===0&&i2!==-1){return string.substring(2,i2)}}};fluid.extractELWithContext=function(string,options){var EL=fluid.extractEL(string,options);if(fluid.isIoCReference(EL)){return fluid.parseContextReference(EL)}else if(options.ELstyle==="{}"){return null}return EL?{path:EL}:EL};fluid.parseContextReference=function(reference,index,delimiter){index=index||0;var isNested=reference.charAt(index+1)==="{",endcpos,context,nested;if(isNested){nested=fluid.parseContextReference(reference,index+1,"}");endcpos=nested.endpos}else{endcpos=reference.indexOf("}",index+1)}if(endcpos===-1){fluid.fail('Cannot parse context reference "'+reference+'": Malformed context reference without }')}if(isNested){context=nested}else{context=reference.substring(index+1,endcpos)}var endpos=delimiter?reference.indexOf(delimiter,endcpos+1):reference.length;var path=reference.substring(endcpos+1,endpos);if(path.charAt(0)==="."){path=path.substring(1)}return{context:context,path:path,endpos:endpos}};fluid.renderContextReference=function(parsed){var context=parsed.context;return"{"+(fluid.isPrimitive(context)?context:fluid.renderContextReference(context))+"}"+(parsed.path?"."+parsed.path:"")};fluid.resolveContextValue=function(string,options){function fetch(parsed){fluid.pushActivity("resolveContextValue","resolving context value %parsed",{parsed:parsed});var togo=options.fetcher(parsed);fluid.pushActivity("resolvedContextValue","resolved value %parsed to value %value",{parsed:parsed,value:togo});fluid.popActivity(2);return togo}var parsed;if(options.bareContextRefs&&fluid.isIoCReference(string)){parsed=fluid.parseContextReference(string);return fetch(parsed)}else if(options.ELstyle&&options.ELstyle!=="${}"){parsed=fluid.extractELWithContext(string,options);if(parsed){return fetch(parsed)}}if(options.ELstyle==="${}"){while(typeof string==="string"){var i1=string.indexOf("${");var i2=string.indexOf("}",i1+2);if(i1!==-1&&i2!==-1){if(string.charAt(i1+2)==="{"){parsed=fluid.parseContextReference(string,i1+2,"}");i2=parsed.endpos}else{parsed={path:string.substring(i1+2,i2)}}var subs=fetch(parsed);var all=i1===0&&i2===string.length-1;if(subs===undefined||subs===null){return subs}string=all?subs:string.substring(0,i1)+subs+string.substring(i2+1)}else{break}}}return string};fluid.fetchExpandChildren=function(target,i,segs,source,mergePolicy,options){if(source.expander){var expanded=fluid.expandExpander(target,source,options);if(fluid.isPrimitive(expanded)||!fluid.isPlainObject(expanded)||fluid.isArrayable(expanded)^fluid.isArrayable(target)){return expanded}else{$.extend(true,target,expanded)}}fluid.each(source,(function(newSource,key){if(newSource===undefined){target[key]=undefined}else if(key!=="expander"){segs[i]=key;if(fluid.getImmediate(options.exceptions,segs,i)!==true){options.strategy(target,key,i+1,segs,source,mergePolicy)}}}));return target};function regenerateCursor(source,segs,limit,sourceStrategy){for(var i=0;i<limit;++i){source=sourceStrategy(source,segs[i],i,fluid.makeArray(segs))}return source}fluid.isUnexpandable=function(source){return fluid.isPrimitive(source)||!fluid.isPlainObject(source)};fluid.expandSource=function(options,target,i,segs,deliverer,source,policy,recurse){var expanded,isTrunk;var thisPolicy=fluid.derefMergePolicy(policy);if(typeof source==="string"&&!thisPolicy.noexpand){if(!options.defaultEL||source.charAt(0)==="{"){fluid.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:source,path:fluid.path.apply(null,segs.slice(0,i))});expanded=fluid.resolveContextValue(source,options);fluid.popActivity(1)}else{expanded=source}}else if(thisPolicy.noexpand||fluid.isUnexpandable(source)){expanded=source}else if(source.expander){expanded=fluid.expandExpander(deliverer,source,options)}else{expanded=fluid.freshContainer(source);isTrunk=true}if(expanded!==fluid.NO_VALUE){deliverer(expanded)}if(isTrunk){recurse(expanded,source,i,segs,policy)}return expanded};fluid.guardCircularExpansion=function(segs,i){if(i>fluid.strategyRecursionBailout){fluid.fail("Overflow/circularity in options expansion, current path is ",segs," at depth ",i,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander')}};fluid.makeExpandStrategy=function(options){var recurse=function(target,source,i,segs,policy){return fluid.fetchExpandChildren(target,i||0,segs||[],source,policy,options)};var strategy=function(target,name,i,segs,source,policy){fluid.guardCircularExpansion(segs,i);if(!target){return}if(target.hasOwnProperty(name)){return target[name]}if(source===undefined){source=regenerateCursor(options.source,segs,i-1,options.sourceStrategy);policy=regenerateCursor(options.mergePolicy,segs,i-1,fluid.concreteTrundler)}var thisSource=options.sourceStrategy(source,name,i,segs);var thisPolicy=fluid.concreteTrundler(policy,name);function deliverer(value){target[name]=value}return fluid.expandSource(options,target,i,segs,deliverer,thisSource,thisPolicy,recurse)};options.recurse=recurse;options.strategy=strategy;return strategy};fluid.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:true,target:fluid.inCreationMarker});fluid.makeExpandOptions=function(source,options){options=$.extend({},fluid.rawDefaults("fluid.makeExpandOptions"),options);options.defaultEL=options.ELStyle==="${}"&&options.bareContextRefs;options.expandSource=function(source){return fluid.expandSource(options,null,0,[],fluid.identity,source,options.mergePolicy,false)};if(!fluid.isUnexpandable(source)){options.source=source;options.target=fluid.freshContainer(source);options.sourceStrategy=options.sourceStrategy||fluid.concreteTrundler;fluid.makeExpandStrategy(options);options.initter=function(){options.target=fluid.fetchExpandChildren(options.target,0,[],options.source,options.mergePolicy,options)}}else{options.strategy=fluid.concreteTrundler;options.initter=fluid.identity;if(typeof source==="string"){options.target=(options.defer?fluid.copy:fluid.identity)(options.expandSource(source))}else{options.target=source}options.immutableTarget=true}return options};fluid.expand=function(source,options){var expandOptions=fluid.makeExpandOptions(source,options);expandOptions.initter();return expandOptions.target};fluid.preExpandRecurse=function(root,source,holder,member,rootSegs){fluid.guardCircularExpansion(rootSegs,rootSegs.length);function pushExpander(expander){root.expanders.push({expander:expander,holder:holder,member:member});delete holder[member]}if(fluid.isIoCReference(source)){var parsed=fluid.parseContextReference(source);var segs=fluid.model.parseEL(parsed.path);pushExpander({typeFunc:fluid.expander.fetch,context:parsed.context,segs:segs})}else if(fluid.isPlainObject(source)){if(source.expander){source.expander.typeFunc=fluid.getGlobalValue(source.expander.type||"fluid.invokeFunc");pushExpander(source.expander)}else{fluid.each(source,(function(value,key){rootSegs.push(key);fluid.preExpandRecurse(root,value,source,key,rootSegs);rootSegs.pop()}))}}};fluid.preExpand=function(source){var root={expanders:[],source:fluid.isUnexpandable(source)?source:fluid.copy(source)};fluid.preExpandRecurse(root,root.source,root,"source",[]);return root};fluid.expandImmediate=function(source,that,localRecord){var options=fluid.makeStackResolverOptions(that,localRecord,true);var root=fluid.preExpand(source);fluid.expandImmediateImpl(root,options);return root.source};fluid.expandImmediateImpl=function(root,options){var expanders=root.expanders;for(var i=0;i<expanders.length;++i){var expander=expanders[i];expander.holder[expander.member]=expander.expander.typeFunc(null,expander,options)}};fluid.expandExpander=function(deliverer,source,options){var expander=fluid.getGlobalValue(source.expander.type||"fluid.invokeFunc");if(!expander){fluid.fail("Unknown expander with type "+source.expander.type)}return expander(deliverer,source,options)};fluid.registerNamespace("fluid.expander");fluid.expander.fetch=function(deliverer,source,options){var localRecord=options.localRecord,context=source.expander.context,segs=source.expander.segs;var inLocal=localRecord[context]!==undefined;var contextStatus=options.contextThat.lifecycleStatus;var fast=contextStatus==="treeConstructed"||contextStatus==="destroyed";var component=inLocal?localRecord[context]:fluid.resolveContext(context,options.contextThat,fast);if(component){var root=component;if(inLocal||component.lifecycleStatus!=="constructing"){for(var i=0;i<segs.length;++i){root=root?root[segs[i]]:undefined}}else{root=fluid.getForComponent(component,segs)}if(root===undefined&&!inLocal){root=fluid.getForComponent(component,segs)}return root}else if(segs.length>0){fluid.triggerMismatchedPathError(source.expander,options.contextThat)}};fluid.invokeFunc=function(deliverer,source,options){var expander=source.expander;var args=fluid.makeArray(expander.args);expander.args=args;if(options.recurse){args=options.recurse([],args)}else{expander=fluid.expandImmediate(expander,options.contextThat,options.localRecord);args=expander.args}var funcEntry=expander.func||expander.funcName;var func=(options.expandSource?options.expandSource(funcEntry):funcEntry)||fluid.recordToApplicable(expander,options.contextThat);if(typeof func==="string"){func=fluid.getGlobalValue(func)}if(!func){fluid.fail("Error in expander record ",expander,": "+funcEntry+" could not be resolved to a function for component ",options.contextThat)}return func.apply(null,args)};fluid.noexpand=function(deliverer,source){return source.expander.value?source.expander.value:source.expander.tree}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.model.makeEnvironmentStrategy=function(environment){return function(root,segment,index){return index===0&&environment[segment]?environment[segment]:undefined}};fluid.model.defaultCreatorStrategy=function(root,segment){if(root[segment]===undefined){root[segment]={};return root[segment]}};fluid.model.defaultFetchStrategy=function(root,segment){return root[segment]};fluid.model.funcResolverStrategy=function(root,segment){if(root.resolvePathSegment){return root.resolvePathSegment(segment)}};fluid.model.traverseWithStrategy=function(root,segs,initPos,config,uncess){var strategies=config.strategies;var limit=segs.length-uncess;for(var i=initPos;i<limit;++i){if(!root){return root}var accepted;for(var j=0;j<strategies.length;++j){accepted=strategies[j](root,segs[i],i+1,segs);if(accepted!==undefined){break}}if(accepted===fluid.NO_VALUE){accepted=undefined}root=accepted}return root};fluid.model.getValueAndSegments=function(root,EL,config,initSegs){return fluid.model.accessWithStrategy(root,EL,fluid.NO_VALUE,config,initSegs,true)};fluid.model.makeTrundler=function(config){return function(valueSeg,EL){return fluid.model.getValueAndSegments(valueSeg.root,EL,config,valueSeg.segs)}};fluid.model.getWithStrategy=function(root,EL,config,initSegs){return fluid.model.accessWithStrategy(root,EL,fluid.NO_VALUE,config,initSegs)};fluid.model.setWithStrategy=function(root,EL,newValue,config,initSegs){fluid.model.accessWithStrategy(root,EL,newValue,config,initSegs)};fluid.model.accessWithStrategy=function(root,EL,newValue,config,initSegs,returnSegs){if(!fluid.isPrimitive(EL)&&!fluid.isArrayable(EL)){var key=EL.type||"default";var resolver=config.resolvers[key];if(!resolver){fluid.fail("Unable to find resolver of type "+key)}var trundler=fluid.model.makeTrundler(config);var valueSeg={root:root,segs:initSegs};valueSeg=resolver(valueSeg,EL,trundler);if(EL.path&&valueSeg){valueSeg=trundler(valueSeg,EL.path)}return returnSegs?valueSeg:valueSeg?valueSeg.root:undefined}else{return fluid.model.accessImpl(root,EL,newValue,config,initSegs,returnSegs,fluid.model.traverseWithStrategy)}};fluid.registerNamespace("fluid.pathUtil");fluid.pathUtil.getPathSegmentImpl=function(accept,path,i){var segment=null;if(accept){segment=""}var escaped=false;var limit=path.length;for(;i<limit;++i){var c=path.charAt(i);if(!escaped){if(c==="."){break}else if(c==="\\"){escaped=true}else if(segment!==null){segment+=c}}else{escaped=false;if(segment!==null){segment+=c}}}if(segment!==null){accept[0]=segment}return i};var globalAccept=[];fluid.pathUtil.parseEL=function(path){var togo=[];var index=0;var limit=path.length;while(index<limit){var firstdot=fluid.pathUtil.getPathSegmentImpl(globalAccept,path,index);togo.push(globalAccept[0]);index=firstdot+1}return togo};fluid.pathUtil.composeSegment=function(prefix,toappend){toappend=toappend.toString();for(var i=0;i<toappend.length;++i){var c=toappend.charAt(i);if(c==="."||c==="\\"||c==="}"){prefix+="\\"}prefix+=c}return prefix};fluid.pathUtil.escapeSegment=function(segment){return fluid.pathUtil.composeSegment("",segment)};fluid.pathUtil.composePath=function(prefix,suffix){if(prefix.length!==0){prefix+="."}return fluid.pathUtil.composeSegment(prefix,suffix)};fluid.pathUtil.composeSegments=function(){var path="";for(var i=0;i<arguments.length;++i){path=fluid.pathUtil.composePath(path,arguments[i])}return path};fluid.pathUtil.matchSegments=function(toMatch,segs,start,end){if(end-start!==toMatch.length){return false}for(var i=start;i<end;++i){if(segs[i]!==toMatch[i-start]){return false}}return true};fluid.model.unescapedParser={parse:fluid.model.parseEL,compose:fluid.model.composeSegments};fluid.model.defaultGetConfig={parser:fluid.model.unescapedParser,strategies:[fluid.model.funcResolverStrategy,fluid.model.defaultFetchStrategy]};fluid.model.defaultSetConfig={parser:fluid.model.unescapedParser,strategies:[fluid.model.funcResolverStrategy,fluid.model.defaultFetchStrategy,fluid.model.defaultCreatorStrategy]};fluid.model.escapedParser={parse:fluid.pathUtil.parseEL,compose:fluid.pathUtil.composeSegments};fluid.model.escapedGetConfig={parser:fluid.model.escapedParser,strategies:[fluid.model.defaultFetchStrategy]};fluid.model.escapedSetConfig={parser:fluid.model.escapedParser,strategies:[fluid.model.defaultFetchStrategy,fluid.model.defaultCreatorStrategy]};fluid.stronglyConnected=function(vertices,accessor){var that={stack:[],accessor:accessor,components:[],index:0};vertices.forEach((function(vertex){if(vertex.tarjanIndex===undefined){fluid.stronglyConnectedOne(vertex,that)}}));return that.components};fluid.stronglyConnectedOne=function(vertex,that){vertex.tarjanIndex=that.index;vertex.lowIndex=that.index;++that.index;that.stack.push(vertex);vertex.onStack=true;var outEdges=that.accessor(vertex);outEdges.forEach((function(outVertex){if(outVertex.tarjanIndex===undefined){fluid.stronglyConnectedOne(outVertex,that);vertex.lowIndex=Math.min(vertex.lowIndex,outVertex.lowIndex)}else if(outVertex.onStack){vertex.lowIndex=Math.min(vertex.lowIndex,outVertex.tarjanIndex)}}));if(vertex.lowIndex===vertex.tarjanIndex){var component=[],outVertex;do{outVertex=that.stack.pop();outVertex.onStack=false;component.push(outVertex)}while(outVertex!==vertex);that.components.push(component)}};fluid.initRelayModel=function(that){fluid.deenlistModelComponent(that);return that.model};fluid.isModelComplete=function(that){return"model"in that&&that.model!==fluid.inEvaluationMarker};fluid.enlistModelComponent=function(that){var instantiator=fluid.getInstantiator(that);var enlist=instantiator.modelTransactions.init[that.id];if(!enlist){enlist={that:that,applier:fluid.getForComponent(that,"applier"),complete:fluid.isModelComplete(that)};instantiator.modelTransactions.init[that.id]=enlist}return enlist};fluid.clearTransactions=function(){var instantiator=fluid.globalInstantiator;fluid.clear(instantiator.modelTransactions);instantiator.modelTransactions.init={}};fluid.failureEvent.addListener(fluid.clearTransactions,"clearTransactions","before:fail");fluid.clearLinkCounts=function(transRec,relaysAlso){fluid.each(transRec,(function(value,key){if(typeof value==="number"){transRec[key]=0}else if(relaysAlso&&value.options&&typeof value.relayCount==="number"){value.relayCount=0}}))};fluid.computeInitialOutArcs=function(transacs,mrec){return fluid.transform(mrec,(function(recel,id){var oneOutArcs={};var listeners=recel.that.applier.listeners.sortedListeners;fluid.each(listeners,(function(listener){if(listener.isRelay&&!fluid.isExcludedChangeSource(transacs[id],listener.cond)){var targetId=listener.targetId;if(targetId!==id){oneOutArcs[targetId]=true}}}));var oneOutArcList=Object.keys(oneOutArcs);var togo=oneOutArcList.map((function(id){return mrec[id]}));fluid.remove_if(togo,(function(rec){return rec===undefined}));return togo}))};fluid.sortCompleteLast=function(reca,recb){return(reca.completeOnInit?1:0)-(recb.completeOnInit?1:0)};fluid.operateInitialTransaction=function(that,mrec){var transId=fluid.allocateGuid();var transRec=fluid.getModelTransactionRec(that,transId);var transac;var transacs=fluid.transform(mrec,(function(recel){transac=recel.that.applier.initiate(null,"init",transId);transRec[recel.that.applier.applierId]={transaction:transac};return transac}));var outArcs=fluid.computeInitialOutArcs(transacs,mrec);var arcAccessor=function(mrec){return outArcs[mrec.that.id]};var recs=fluid.values(mrec);var components=fluid.stronglyConnected(recs,arcAccessor);var priorityIndex=0;components.forEach((function(component){component.forEach((function(recel){recel.initPriority=recel.completeOnInit?Math.Infinity:priorityIndex++}))}));recs.sort((function(reca,recb){return reca.initPriority-recb.initPriority}));recs.forEach((function(recel){var that=recel.that;var transac=transacs[that.id];if(recel.completeOnInit){fluid.initModelEvent(that,that.applier,transac,that.applier.listeners.sortedListeners)}else{fluid.each(recel.initModels,(function(initModel){transac.fireChangeRequest({type:"ADD",segs:[],value:initModel});fluid.clearLinkCounts(transRec,true)}))}var shadow=fluid.shadowForComponent(that);if(shadow){shadow.modelComplete=true}}));transac.commit()};fluid.deenlistModelComponent=function(that){var instantiator=fluid.getInstantiator(that);var mrec=instantiator.modelTransactions.init;if(!mrec[that.id]){return}that.model=undefined;mrec[that.id].complete=true;var incomplete=fluid.find_if(mrec,(function(recel){return recel.complete!==true}));if(!incomplete){try{fluid.operateInitialTransaction(that,mrec)}catch(e){fluid.clearTransactions();throw e}instantiator.modelTransactions.init={}}};fluid.parseModelReference=function(that,ref){var parsed=fluid.parseContextReference(ref);parsed.segs=that.applier.parseEL(parsed.path);return parsed};fluid.parseValidModelReference=function(that,name,ref,implicitRelay){var reject=function(){var failArgs=["Error in "+name+": ",ref].concat(fluid.makeArray(arguments));fluid.fail.apply(null,failArgs)};var rejectNonModel=function(value){reject(" must be a reference to a component with a ChangeApplier (descended from fluid.modelComponent), instead got ",value)};var parsed;if(typeof ref==="string"){if(fluid.isIoCReference(ref)){parsed=fluid.parseModelReference(that,ref);var modelPoint=parsed.segs.indexOf("model");if(modelPoint===-1){if(implicitRelay){parsed.nonModel=true}else{reject(' must be a reference into a component model via a path including the segment "model"')}}else{parsed.modelSegs=parsed.segs.slice(modelPoint+1);parsed.contextSegs=parsed.segs.slice(0,modelPoint);delete parsed.path}}else{parsed={path:ref,modelSegs:that.applier.parseEL(ref)}}}else{if(!fluid.isArrayable(ref.segs)){reject(' must contain an entry "segs" holding path segments referring a model path within a component')}parsed={context:ref.context,modelSegs:fluid.expandOptions(ref.segs,that)}}var contextTarget,target;if(parsed.context){contextTarget=fluid.resolveContext(parsed.context,that);if(!contextTarget){reject(" context must be a reference to an existing component")}target=parsed.contextSegs?fluid.getForComponent(contextTarget,parsed.contextSegs):contextTarget}else{target=that}if(!parsed.nonModel){if(!fluid.isComponent(target)){rejectNonModel(target)}if(!target.applier){fluid.getForComponent(target,["applier"])}if(!target.applier){rejectNonModel(target)}}parsed.that=target;parsed.applier=target&&target.applier;if(!parsed.path){parsed.path=target&&target.applier.composeSegments.apply(null,parsed.modelSegs)}return parsed};fluid.getModelTransactionRec=function(that,transId){var instantiator=fluid.getInstantiator(that);if(!transId){fluid.fail("Cannot get transaction record without transaction id")}if(!instantiator){return null}var transRec=instantiator.modelTransactions[transId];if(!transRec){transRec=instantiator.modelTransactions[transId]={relays:[],sources:{},externalChanges:{}}}return transRec};fluid.recordChangeListener=function(component,applier,sourceListener,listenerId){var shadow=fluid.shadowForComponent(component);fluid.recordListener(applier.modelChanged,sourceListener,shadow,listenerId)};fluid.registerRelayTransaction=function(transRec,targetApplier,transId,options,npOptions){var newTrans=targetApplier.initiate("relay",null,transId);var transEl=transRec[targetApplier.applierId]={transaction:newTrans,relayCount:0,namespace:npOptions.namespace,priority:npOptions.priority,options:options};transEl.priority=fluid.parsePriority(transEl.priority,transRec.relays.length,false,"model relay");transRec.relays.push(transEl);return transEl};fluid.relayRecursionBailout=100;fluid.registerDirectChangeRelay=function(target,targetSegs,source,sourceSegs,linkId,transducer,options,npOptions){var targetApplier=options.targetApplier||target.applier;var sourceApplier=options.sourceApplier||source.applier;var applierId=targetApplier.applierId;targetSegs=fluid.makeArray(targetSegs);sourceSegs=fluid.makeArray(sourceSegs);var sourceListener=function(newValue,oldValue,path,changeRequest,trans,applier){var transId=trans.id;var transRec=fluid.getModelTransactionRec(target,transId);if(applier&&trans&&!transRec[applier.applierId]){transRec[applier.applierId]={transaction:trans}}var existing=transRec[applierId];transRec[linkId]=transRec[linkId]||0;var relay=true;if(relay){++transRec[linkId];if(transRec[linkId]>fluid.relayRecursionBailout){fluid.fail("Error in model relay specification at component ",target," - operated more than "+fluid.relayRecursionBailout+" relays without model value settling - current model contents are ",trans.newHolder.model)}if(!existing){existing=fluid.registerRelayTransaction(transRec,targetApplier,transId,options,npOptions)}if(transducer&&!options.targetApplier){transducer(existing.transaction,options.sourceApplier?undefined:newValue,sourceSegs,targetSegs,changeRequest)}else{if(changeRequest&&changeRequest.type==="DELETE"){existing.transaction.fireChangeRequest({type:"DELETE",segs:targetSegs})}if(newValue!==undefined){existing.transaction.fireChangeRequest({type:"ADD",segs:targetSegs,value:newValue})}}}};var spec=sourceApplier.modelChanged.addListener({isRelay:true,cond:transducer&&transducer.cond,targetId:target.id,targetApplierId:targetApplier.id,segs:sourceSegs,transactional:options.transactional},sourceListener);if(fluid.passLogLevel(fluid.logLevel.TRACE)){fluid.log(fluid.logLevel.TRACE,"Adding relay listener with listenerId "+spec.listenerId+" to source applier with id "+sourceApplier.applierId+" from target applier with id "+applierId+" for target component with id "+target.id)}if(source){fluid.recordChangeListener(source,sourceApplier,sourceListener,spec.listenerId);if(target!==source){fluid.recordChangeListener(target,sourceApplier,sourceListener,spec.listenerId)}}};fluid.connectModelRelay=function(source,sourceSegs,target,targetSegs,options){var linkId=fluid.allocateGuid();function enlistComponent(component){var enlist=fluid.enlistModelComponent(component);if(enlist.complete){var shadow=fluid.shadowForComponent(component);if(shadow.modelComplete){enlist.completeOnInit=true}}}enlistComponent(target);enlistComponent(source);var npOptions=fluid.filterKeys(options,["namespace","priority"]);if(options.update){if(options.targetApplier){fluid.registerDirectChangeRelay(source,sourceSegs,target,targetSegs,linkId,null,{transactional:false,targetApplier:options.targetApplier,update:options.update},npOptions)}else{fluid.registerDirectChangeRelay(target,targetSegs,source,[],linkId+"-transform",options.forwardAdapter,{transactional:true,sourceApplier:options.forwardApplier},npOptions)}}else{fluid.registerDirectChangeRelay(target,targetSegs,source,sourceSegs,linkId,options.forwardAdapter,{transactional:false},npOptions);fluid.registerDirectChangeRelay(source,sourceSegs,target,targetSegs,linkId,options.backwardAdapter,{transactional:false},npOptions)}};fluid.parseSourceExclusionSpec=function(targetSpec,sourceSpec){targetSpec.excludeSource=fluid.arrayToHash(fluid.makeArray(sourceSpec.excludeSource||(sourceSpec.includeSource?"*":undefined)));targetSpec.includeSource=fluid.arrayToHash(fluid.makeArray(sourceSpec.includeSource));return targetSpec};fluid.isExcludedChangeSource=function(transaction,spec){if(!spec||!spec.excludeSource){return false}var excluded=spec.excludeSource["*"];for(var source in transaction.fullSources){if(spec.excludeSource[source]){excluded=true}if(spec.includeSource[source]){excluded=false}}return excluded};fluid.model.guardedAdapter=function(transaction,cond,func,args){if(!fluid.isExcludedChangeSource(transaction,cond)&&func!==fluid.model.transform.uninvertibleTransform){func.apply(null,args)}};fluid.transformToAdapter=function(transform,targetPath){var basedTransform={};basedTransform[targetPath]=transform;return function(trans,newValue,sourceSegs,targetSegs,changeRequest){if(changeRequest&&changeRequest.type==="DELETE"){trans.fireChangeRequest({type:"DELETE",path:targetPath})}fluid.model.transformWithRules(newValue,basedTransform,{finalApplier:trans})}};fluid.makeTransformPackage=function(componentThat,transform,sourcePath,targetPath,forwardCond,backwardCond,namespace,priority){var that={forwardHolder:{model:transform},backwardHolder:{model:null}};that.generateAdapters=function(trans){that.forwardAdapterImpl=fluid.transformToAdapter(trans?trans.newHolder.model:that.forwardHolder.model,targetPath);if(sourcePath!==null){var inverted=fluid.model.transform.invertConfiguration(transform);if(inverted!==fluid.model.transform.uninvertibleTransform){that.backwardHolder.model=inverted;that.backwardAdapterImpl=fluid.transformToAdapter(that.backwardHolder.model,sourcePath)}else{that.backwardAdapterImpl=inverted}}};that.forwardAdapter=function(transaction,newValue){if(newValue===undefined){that.generateAdapters()}fluid.model.guardedAdapter(transaction,forwardCond,that.forwardAdapterImpl,arguments)};that.forwardAdapter.cond=forwardCond;that.runTransform=function(trans){trans.commit();trans.reset()};that.forwardApplier=fluid.makeHolderChangeApplier(that.forwardHolder);that.forwardApplier.isRelayApplier=true;that.invalidator=fluid.makeEventFirer({name:"Invalidator for model relay with applier "+that.forwardApplier.applierId});if(sourcePath!==null){that.backwardApplier=fluid.makeHolderChangeApplier(that.backwardHolder);that.backwardAdapter=function(transaction){fluid.model.guardedAdapter(transaction,backwardCond,that.backwardAdapterImpl,arguments)};that.backwardAdapter.cond=backwardCond}that.update=that.invalidator.fire;var implicitOptions={targetApplier:that.forwardApplier,update:that.update,namespace:namespace,priority:priority,refCount:0};that.forwardHolder.model=fluid.parseImplicitRelay(componentThat,transform,[],implicitOptions);that.refCount=implicitOptions.refCount;that.namespace=namespace;that.priority=priority;that.generateAdapters();that.invalidator.addListener(that.generateAdapters);that.invalidator.addListener(that.runTransform);return that};fluid.singleTransformToFull=function(singleTransform){var withPath=$.extend(true,{inputPath:""},singleTransform);return{"":{transform:withPath}}};fluid.model.relayConditions={initOnly:{includeSource:"init"},liveOnly:{excludeSource:"init"},never:{includeSource:[]},always:{}};fluid.model.parseRelayCondition=function(condition){if(condition==="initOnly"){fluid.log(fluid.logLevel.WARN,'The relay condition "initOnly" is deprecated: Please use the form \'includeSource: "init"\' instead')}else if(condition==="liveOnly"){fluid.log(fluid.logLevel.WARN,'The relay condition "liveOnly" is deprecated: Please use the form \'excludeSource: "init"\' instead')}var exclusionRec;if(!condition){exclusionRec={}}else if(typeof condition==="string"){exclusionRec=fluid.model.relayConditions[condition];if(!exclusionRec){fluid.fail('Unrecognised model relay condition string "'+condition+'": the supported values are "never" or a record with members "includeSource" and/or "excludeSource"')}}else{exclusionRec=condition}return fluid.parseSourceExclusionSpec({},exclusionRec)};fluid.parseModelRelay=function(that,mrrec,key){var parsedSource=mrrec.source!==undefined?fluid.parseValidModelReference(that,'modelRelay record member "source"',mrrec.source):{path:null,modelSegs:null};var parsedTarget=fluid.parseValidModelReference(that,'modelRelay record member "target"',mrrec.target);var namespace=mrrec.namespace||key;var transform=mrrec.singleTransform?fluid.singleTransformToFull(mrrec.singleTransform):mrrec.transform;if(!transform){fluid.fail('Cannot parse modelRelay record without element "singleTransform" or "transform":',mrrec)}var forwardCond=fluid.model.parseRelayCondition(mrrec.forward),backwardCond=fluid.model.parseRelayCondition(mrrec.backward);var transformPackage=fluid.makeTransformPackage(that,transform,parsedSource.path,parsedTarget.path,forwardCond,backwardCond,namespace,mrrec.priority);if(transformPackage.refCount===0){fluid.connectModelRelay(parsedSource.that||that,parsedSource.modelSegs,parsedTarget.that,parsedTarget.modelSegs,fluid.filterKeys(transformPackage,["forwardAdapter","backwardAdapter","namespace","priority"]))}else{if(parsedSource.modelSegs){fluid.fail('Error in model relay definition: If a relay transform has a model dependency, you can not specify a "source" entry - please instead enter this as "input" in the transform specification. Definition was ',mrrec," for component ",that)}fluid.connectModelRelay(that,null,parsedTarget.that,parsedTarget.modelSegs,transformPackage)}};fluid.parseImplicitRelay=function(that,modelRec,segs,options){var value;if(fluid.isIoCReference(modelRec)){var parsed=fluid.parseValidModelReference(that,"model reference from model (implicit relay)",modelRec,true);if(parsed.nonModel){value=fluid.getForComponent(parsed.that,parsed.segs)}else{++options.refCount;fluid.connectModelRelay(that,segs,parsed.that,parsed.modelSegs,options)}}else if(fluid.isPrimitive(modelRec)||!fluid.isPlainObject(modelRec)){value=modelRec}else if(modelRec.expander&&fluid.isPlainObject(modelRec.expander)){value=fluid.expandOptions(modelRec,that)}else{value=fluid.freshContainer(modelRec);fluid.each(modelRec,(function(innerValue,key){segs.push(key);var innerTrans=fluid.parseImplicitRelay(that,innerValue,segs,options);if(innerTrans!==undefined){value[key]=innerTrans}segs.pop()}))}return value};fluid.model.notifyExternal=function(transRec){var allChanges=transRec?fluid.values(transRec.externalChanges):[];fluid.sortByPriority(allChanges);for(var i=0;i<allChanges.length;++i){var change=allChanges[i];var targetApplier=change.args[5];if(!targetApplier.destroyed){change.listener.apply(null,change.args)}}fluid.clearLinkCounts(transRec,true)};fluid.model.commitRelays=function(instantiator,transactionId){var transRec=instantiator.modelTransactions[transactionId];fluid.each(transRec,(function(transEl){if(transEl.transaction){transEl.transaction.commit("relay");transEl.transaction.reset()}}))};fluid.model.updateRelays=function(instantiator,transactionId){var transRec=instantiator.modelTransactions[transactionId];var updates=0;fluid.sortByPriority(transRec.relays);fluid.each(transRec.relays,(function(transEl){if(transEl.transaction.changeRecord.changes>0&&transEl.relayCount<2&&transEl.options.update){transEl.relayCount++;fluid.clearLinkCounts(transRec);transEl.options.update(transEl.transaction,transRec);++updates}}));return updates};fluid.establishModelRelay=function(that,optionsModel,optionsML,optionsMR,applier){var shadow=fluid.shadowForComponent(that);if(!shadow.modelRelayEstablished){shadow.modelRelayEstablished=true}else{fluid.fail("FLUID-5887 failure: Model relay initialised twice on component",that)}fluid.mergeModelListeners(that,optionsML);var enlist=fluid.enlistModelComponent(that);fluid.each(optionsMR,(function(mrrec,key){for(var i=0;i<mrrec.length;++i){fluid.parseModelRelay(that,mrrec[i],key)}}));var initModels=fluid.transform(optionsModel,(function(modelRec){return fluid.parseImplicitRelay(that,modelRec,[],{refCount:0,priority:"first"})}));enlist.initModels=initModels;var instantiator=fluid.getInstantiator(that);function updateRelays(transaction){while(fluid.model.updateRelays(instantiator,transaction.id)>0){}}function commitRelays(transaction,applier,code){if(code!=="relay"){fluid.model.commitRelays(instantiator,transaction.id)}}function concludeTransaction(transaction,applier,code){if(code!=="relay"){fluid.model.notifyExternal(instantiator.modelTransactions[transaction.id]);delete instantiator.modelTransactions[transaction.id]}}applier.preCommit.addListener(updateRelays);applier.preCommit.addListener(commitRelays);applier.postCommit.addListener(concludeTransaction);return null};fluid.defaults("fluid.modelComponent",{gradeNames:["fluid.component"],changeApplierOptions:{relayStyle:true,cullUnchanged:true},members:{model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeHolderChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:true,func:fluid.arrayConcatPolicy},modelListeners:fluid.makeMergeListenersPolicy(fluid.arrayConcatPolicy),modelRelay:fluid.makeMergeListenersPolicy(fluid.arrayConcatPolicy,true)}});fluid.modelChangedToChange=function(args){return{value:args[0],oldValue:args[1],path:args[2],transaction:args[4]}};fluid.event.invokeListener=function(listener,args,localRecord,mergeRecord){if(typeof listener==="string"){listener=fluid.event.resolveListener(listener)}return listener.apply(null,args,localRecord,mergeRecord)};fluid.resolveModelListener=function(that,record){var togo=function(){if(fluid.isDestroyed(that)){return}var change=fluid.modelChangedToChange(arguments);var args=arguments;var localRecord={change:change,arguments:args};var mergeRecord={source:Object.keys(change.transaction.sources)};if(record.args){args=fluid.expandOptions(record.args,that,{},localRecord)}fluid.event.invokeListener(record.listener,fluid.makeArray(args),localRecord,mergeRecord)};fluid.event.impersonateListener(record.listener,togo);return togo};fluid.registerModelListeners=function(that,record,paths,namespace){var func=fluid.resolveModelListener(that,record);fluid.each(record.byTarget,(function(parsedArray){var parsed=parsedArray[0];var spec={listener:func,listenerId:fluid.allocateGuid(),segsArray:fluid.getMembers(parsedArray,"modelSegs"),pathArray:fluid.getMembers(parsedArray,"path"),includeSource:record.includeSource,excludeSource:record.excludeSource,priority:fluid.expandOptions(record.priority,that),transactional:true};spec=parsed.applier.modelChanged.addListener(spec,func,namespace,record.softNamespace);fluid.recordChangeListener(that,parsed.applier,func,spec.listenerId);function initModelEvent(){if(fluid.isModelComplete(parsed.that)){var trans=parsed.applier.initiate(null,"init");fluid.initModelEvent(that,parsed.applier,trans,[spec]);trans.commit()}}if(that!==parsed.that&&!fluid.isModelComplete(that)){var onCreate=fluid.getForComponent(that,["events","onCreate"]);onCreate.addListener(initModelEvent)}}))};fluid.mergeModelListeners=function(that,listeners){fluid.each(listeners,(function(value,key){if(typeof value==="string"){value={funcName:value}}var records=fluid.event.resolveListenerRecord(value,that,"modelListeners",null,false).records;fluid.each(records,(function(record){record.byTarget={};var paths=fluid.makeArray(record.path===undefined?key:record.path);fluid.each(paths,(function(path){var parsed=fluid.parseValidModelReference(that,"modelListeners entry",path);fluid.pushArray(record.byTarget,parsed.that.id,parsed)}));var namespace=(record.namespace&&!record.softNamespace?record.namespace:null)||(record.path!==undefined?key:null);fluid.registerModelListeners(that,record,paths,namespace)}))}))};fluid.fireChanges=function(applier,changes){for(var i=0;i<changes.length;++i){applier.fireChangeRequest(changes[i])}};fluid.model.isChangedPath=function(changeMap,segs){for(var i=0;i<=segs.length;++i){if(typeof changeMap==="string"){return true}if(i<segs.length&&changeMap){changeMap=changeMap[segs[i]]}}return false};fluid.model.setChangedPath=function(options,segs,value){var notePath=function(record){segs.unshift(record);fluid.model.setSimple(options,segs,value);segs.shift()};if(!fluid.model.isChangedPath(options.changeMap,segs)){++options.changes;notePath("changeMap")}if(!fluid.model.isChangedPath(options.deltaMap,segs)){++options.deltas;notePath("deltaMap")}};fluid.model.fetchChangeChildren=function(target,i,segs,source,options){fluid.each(source,(function(value,key){segs[i]=key;fluid.model.applyChangeStrategy(target,key,i,segs,value,options);segs.length=i}))};fluid.model.isSameValue=function(a,b){if(typeof a!=="number"||typeof b!=="number"){return a===b}else{if(a===b||a!==a&&b!==b){return true}else{var relError=Math.abs((a-b)/b);return relError<1e-12}}};fluid.model.applyChangeStrategy=function(target,name,i,segs,source,options){var targetSlot=target[name];var sourceCode=fluid.typeCode(source);var targetCode=fluid.typeCode(targetSlot);var changedValue=fluid.NO_VALUE;if(sourceCode==="primitive"){if(!fluid.model.isSameValue(targetSlot,source)){changedValue=source;++options.unchanged}}else if(targetCode!==sourceCode||sourceCode==="array"&&source.length!==targetSlot.length){changedValue=fluid.freshContainer(source)}if(changedValue!==fluid.NO_VALUE){target[name]=changedValue;if(options.changeMap){fluid.model.setChangedPath(options,segs,options.inverse?"DELETE":"ADD")}}if(sourceCode!=="primitive"){fluid.model.fetchChangeChildren(target[name],i+1,segs,source,options)}};fluid.model.stepTargetAccess=function(target,type,segs,startpos,endpos,options){for(var i=startpos;i<endpos;++i){if(!target){continue}var oldTrunk=target[segs[i]];target=fluid.model.traverseWithStrategy(target,segs,i,options[type==="ADD"?"resolverSetConfig":"resolverGetConfig"],segs.length-i-1);if(oldTrunk!==target&&options.changeMap){fluid.model.setChangedPath(options,segs.slice(0,i+1),"ADD")}}return{root:target,last:segs[endpos]}};fluid.model.defaultAccessorConfig=function(options){options=options||{};options.resolverSetConfig=options.resolverSetConfig||fluid.model.escapedSetConfig;options.resolverGetConfig=options.resolverGetConfig||fluid.model.escapedGetConfig;return options};fluid.model.applyHolderChangeRequest=function(holder,request,options){options=fluid.model.defaultAccessorConfig(options);options.deltaMap=options.changeMap?{}:null;options.deltas=0;var length=request.segs.length;var pen,atRoot=length===0;if(atRoot){pen={root:holder,last:"model"}}else{if(!holder.model){holder.model={};fluid.model.setChangedPath(options,[],options.inverse?"DELETE":"ADD")}pen=fluid.model.stepTargetAccess(holder.model,request.type,request.segs,0,length-1,options)}if(request.type==="ADD"){var value=request.value;var segs=fluid.makeArray(request.segs);fluid.model.applyChangeStrategy(pen.root,pen.last,length-1,segs,value,options,atRoot)}else if(request.type==="DELETE"){if(pen.root&&pen.root[pen.last]!==undefined){delete pen.root[pen.last];if(options.changeMap){fluid.model.setChangedPath(options,request.segs,"DELETE")}}}else{fluid.fail("Unrecognised change type of "+request.type)}return options.deltas?options.deltaMap:null};fluid.model.diff=function(modela,modelb,options){options=options||{changes:0,unchanged:0,changeMap:{}};var typea=fluid.typeCode(modela);var typeb=fluid.typeCode(modelb);var togo;if(typea==="primitive"&&typeb==="primitive"){togo=fluid.model.isSameValue(modela,modelb)}else if(typea==="primitive"^typeb==="primitive"){togo=false}else{var holdera={model:fluid.copy(modela)};fluid.model.applyHolderChangeRequest(holdera,{value:modelb,segs:[],type:"ADD"},options);var holderb={model:fluid.copy(modelb)};options.inverse=true;fluid.model.applyHolderChangeRequest(holderb,{value:modela,segs:[],type:"ADD"},options);togo=options.changes===0}if(togo===false&&options.changes===0){options.changes=1;options.changeMap=modelb===undefined?"DELETE":"ADD"}else if(togo===true&&options.unchanged===0){options.unchanged=1}return togo};fluid.outputMatches=function(matches,outSegs,root){fluid.each(root,(function(value,key){matches.push(outSegs.concat(key))}))};fluid.matchChanges=function(changeMap,specSegs,newHolder,oldHolder){var newRoot=newHolder.model;var oldRoot=oldHolder.model;var map=changeMap;var outSegs=["model"];var wildcard=false;var togo=[];for(var i=0;i<specSegs.length;++i){var seg=specSegs[i];if(seg==="*"){if(i===specSegs.length-1){wildcard=true}else{fluid.fail("Wildcard specification in modelChanged listener is only supported for the final path segment: "+specSegs.join("."))}}else{outSegs.push(seg);map=fluid.isPrimitive(map)?map:map[seg];newRoot=newRoot?newRoot[seg]:undefined;oldRoot=oldRoot?oldRoot[seg]:undefined}}if(map){if(wildcard){if(map==="DELETE"){fluid.outputMatches(togo,outSegs,oldRoot)}else if(map==="ADD"){fluid.outputMatches(togo,outSegs,newRoot)}else{fluid.outputMatches(togo,outSegs,map)}}else{togo.push(outSegs)}}return togo};fluid.storeExternalChange=function(transRec,applier,invalidPath,spec,args){var pathString=applier.composeSegments.apply(null,invalidPath);var keySegs=[applier.holder.id,spec.listenerId,spec.wildcard?pathString:""];var keyString=keySegs.join("|");transRec.externalChanges[keyString]={listener:spec.listener,namespace:spec.namespace,priority:spec.priority,args:args}};fluid.notifyModelChanges=function(listeners,changeMap,newHolder,oldHolder,changeRequest,transaction,applier,that){if(!listeners){return}var transRec=transaction&&fluid.getModelTransactionRec(that,transaction.id);for(var i=0;i<listeners.length;++i){var spec=listeners[i];var multiplePaths=spec.segsArray.length>1;for(var j=0;j<spec.segsArray.length;++j){var invalidPaths=fluid.matchChanges(changeMap,spec.segsArray[j],newHolder,oldHolder);for(var k=0;k<invalidPaths.length;++k){if(applier.destroyed){return}var invalidPath=invalidPaths[k];spec.listener=fluid.event.resolveListener(spec.listener);var args=[multiplePaths?newHolder.model:fluid.model.getSimple(newHolder,invalidPath),multiplePaths?oldHolder.model:fluid.model.getSimple(oldHolder,invalidPath),multiplePaths?[]:invalidPath.slice(1),changeRequest,transaction,applier];if(!spec.isRelay){var isNull=fluid.model.diff(args[0],args[1]);if(isNull){continue}var sourceExcluded=fluid.isExcludedChangeSource(transaction,spec);if(sourceExcluded){continue}}if(transRec&&!spec.isRelay&&spec.transactional){fluid.storeExternalChange(transRec,applier,invalidPath,spec,args)}else{spec.listener.apply(null,args)}}}}};fluid.bindELMethods=function(applier){applier.parseEL=function(EL){return fluid.model.pathToSegments(EL,applier.options.resolverSetConfig)};applier.composeSegments=function(){return applier.options.resolverSetConfig.parser.compose.apply(null,arguments)}};fluid.initModelEvent=function(that,applier,trans,listeners){fluid.notifyModelChanges(listeners,"ADD",trans.oldHolder,fluid.emptyHolder,null,trans,applier,that)};fluid.emptyHolder=fluid.freezeRecursive({model:undefined});fluid.preFireChangeRequest=function(applier,changeRequest){if(!changeRequest.type){changeRequest.type="ADD"}changeRequest.segs=changeRequest.segs||applier.parseEL(changeRequest.path)};fluid.bindRequestChange=function(that){that.change=function(path,value,type,source){var changeRequest={path:path,value:value,type:type,source:source};that.fireChangeRequest(changeRequest)}};fluid.isObjectSimple=function(totest){return Object.prototype.toString.call(totest)==="[object Object]"};fluid.mergeChangeSources=function(target,globalSources){if(fluid.isObjectSimple(globalSources)){fluid.extend(target,globalSources)}else{fluid.each(fluid.makeArray(globalSources),(function(globalSource){target[globalSource]=true}))}};fluid.ChangeApplier=function(){};fluid.makeHolderChangeApplier=function(holder,options){options=fluid.model.defaultAccessorConfig(options);var applierId=fluid.allocateGuid();var that=new fluid.ChangeApplier;var name=fluid.isComponent(holder)?"ChangeApplier for component "+fluid.dumpThat(holder):"ChangeApplier with id "+applierId;$.extend(that,{applierId:applierId,holder:holder,listeners:fluid.makeEventFirer({name:"Internal change listeners for "+name}),transListeners:fluid.makeEventFirer({name:"External change listeners for "+name}),options:options,modelChanged:{},preCommit:fluid.makeEventFirer({name:"preCommit event for "+name}),postCommit:fluid.makeEventFirer({name:"postCommit event for "+name})});that.destroy=function(){that.preCommit.destroy();that.postCommit.destroy();that.destroyed=true};that.modelChanged.addListener=function(spec,listener,namespace,softNamespace){if(typeof spec==="string"){spec={path:spec}}else{spec=fluid.copy(spec)}spec.listenerId=spec.listenerId||fluid.allocateGuid();spec.namespace=namespace;spec.softNamespace=softNamespace;if(typeof listener==="string"){listener={globalName:listener}}spec.listener=listener;if(spec.transactional!==false){spec.transactional=true}if(!spec.segsArray){if(spec.path!==undefined){spec.segs=spec.segs||that.parseEL(spec.path)}if(!spec.segsArray){spec.segsArray=[spec.segs]}}if(!spec.isRelay){fluid.parseSourceExclusionSpec(spec,spec);spec.wildcard=fluid.accumulate(fluid.transform(spec.segsArray,(function(segs){return fluid.contains(segs,"*")})),fluid.add,0);if(spec.wildcard&&spec.segsArray.length>1){fluid.fail("Error in model listener specification ",spec," - you may not supply a wildcard pattern as one of a set of multiple paths to be matched")}}var firer=that[spec.transactional?"transListeners":"listeners"];firer.addListener(spec);return spec};that.modelChanged.removeListener=function(listener){that.listeners.removeListener(listener);that.transListeners.removeListener(listener)};that.fireChangeRequest=function(changeRequest){var ation=that.initiate("local",changeRequest.source);ation.fireChangeRequest(changeRequest);ation.commit()};that.initiate=function(localSource,globalSources,transactionId){localSource=globalSources==="init"?null:localSource||"local";var defeatPost=localSource==="relay";var trans={instanceId:fluid.allocateGuid(),id:transactionId||fluid.allocateGuid(),changeRecord:{resolverSetConfig:options.resolverSetConfig,resolverGetConfig:options.resolverGetConfig},reset:function(){trans.oldHolder=holder;trans.newHolder={model:fluid.copy(holder.model)};trans.changeRecord.changes=0;trans.changeRecord.unchanged=0;trans.changeRecord.changeMap={}},commit:function(code){that.preCommit.fire(trans,that,code);if(trans.changeRecord.changes>0){var oldHolder={model:holder.model};holder.model=trans.newHolder.model;fluid.notifyModelChanges(that.transListeners.sortedListeners,trans.changeRecord.changeMap,holder,oldHolder,null,trans,that,holder)}if(!defeatPost){that.postCommit.fire(trans,that,code)}},fireChangeRequest:function(changeRequest){fluid.preFireChangeRequest(that,changeRequest);changeRequest.transactionId=trans.id;var deltaMap=fluid.model.applyHolderChangeRequest(trans.newHolder,changeRequest,trans.changeRecord);fluid.notifyModelChanges(that.listeners.sortedListeners,deltaMap,trans.newHolder,holder,changeRequest,trans,that,holder)},hasChangeSource:function(source){return trans.fullSources[source]}};var transRec=fluid.getModelTransactionRec(holder,trans.id);if(transRec){fluid.mergeChangeSources(transRec.sources,globalSources);trans.sources=transRec.sources;trans.fullSources=Object.create(transRec.sources);trans.fullSources[localSource]=true}trans.reset();fluid.bindRequestChange(trans);return trans};fluid.bindRequestChange(that);fluid.bindELMethods(that);return that};fluid.modelPairToChanges=function(value,oldValue,changePathPrefix){changePathPrefix=changePathPrefix||"";var diffOptions={changes:0,unchanged:0,changeMap:{}};fluid.model.diff(oldValue,value,diffOptions);var changes=[];fluid.modelPairToChangesImpl(value,fluid.pathUtil.parseEL(changePathPrefix),diffOptions.changeMap,[],changes);return changes};fluid.modelPairToChangesImpl=function(value,changePathPrefixSegs,changeMap,changeSegs,changes){if(changeMap==="ADD"){changes.push({path:changePathPrefixSegs,value:value,type:"ADD"})}else if(changeMap==="DELETE"){changes.push({path:changePathPrefixSegs,value:null,type:"DELETE"})}else if(fluid.isPlainObject(changeMap,true)){fluid.each(changeMap,(function(change,seg){var currentChangeSegs=changeSegs.concat([seg]);if(change==="ADD"){changes.push({path:changePathPrefixSegs.concat(currentChangeSegs),value:fluid.get(value,currentChangeSegs),type:"ADD"})}else if(change==="DELETE"){changes.push({path:changePathPrefixSegs.concat(currentChangeSegs),value:null,type:"DELETE"})}else if(fluid.isPlainObject(change,true)){fluid.modelPairToChangesImpl(value,changePathPrefixSegs,change,currentChangeSegs,changes)}}))}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.remoteModelComponent",{gradeNames:["fluid.modelComponent"],events:{afterFetch:null,onFetch:null,onFetchError:null,afterWrite:null,onWrite:null,onWriteError:null},members:{pendingRequests:{write:null,fetch:null}},model:{local:{},remote:{},requestInFlight:false},modelListeners:{requestInFlight:{listener:"fluid.remoteModelComponent.launchPendingRequest",args:["{that}"]}},listeners:{"afterFetch.updateModel":{listener:"fluid.remoteModelComponent.updateModelFromFetch",args:["{that}","{arguments}.0"],priority:"before:unblock"},"afterFetch.unblock":{listener:"fluid.remoteModelComponent.unblockFetchReq",args:["{that}"]},"onFetchError.unblock":{listener:"fluid.remoteModelComponent.unblockFetchReq",args:["{that}"]},"afterWrite.updateRemoteModel":{listener:"fluid.remoteModelComponent.updateRemoteFromLocal",args:["{that}"]},"afterWrite.unblock":{changePath:"requestInFlight",value:false,priority:"after:updateRemoteModel"},"onWriteError.unblock":{changePath:"requestInFlight",value:false}},invokers:{fetch:{funcName:"fluid.remoteModelComponent.fetch",args:["{that}"]},fetchImpl:"fluid.notImplemented",write:{funcName:"fluid.remoteModelComponent.write",args:["{that}"]},writeImpl:"fluid.notImplemented"}});fluid.remoteModelComponent.launchPendingRequest=function(that){if(!that.model.requestInFlight){if(that.pendingRequests.fetch){that.fetch()}else if(that.pendingRequests.write){that.write()}}};fluid.remoteModelComponent.updateModelFromFetch=function(that,fetchedModel){var remoteChanges=fluid.modelPairToChanges(fetchedModel,that.model.remote,"local");var localChanges=fluid.modelPairToChanges(that.model.local,that.model.remote,"local");var changes=remoteChanges.concat(localChanges);var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"local",type:"DELETE"});transaction.change("local",that.model.remote);transaction.fireChangeRequest({path:"remote",type:"DELETE"});transaction.change("remote",fetchedModel);fluid.fireChanges(transaction,changes);transaction.commit()};fluid.remoteModelComponent.updateRemoteFromLocal=function(that){var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"remote",type:"DELETE"});transaction.change("remote",that.model.local);transaction.commit()};fluid.remoteModelComponent.makeSequenceStrategy=function(payload){return{invokeNext:function(that){var lisrec=that.sources[that.index];lisrec.listener=fluid.event.resolveListener(lisrec.listener);var value=lisrec.listener.apply(null,[payload,that.options]);return value},resolveResult:function(){return payload}}};fluid.remoteModelComponent.makeSequence=function(listeners,payload,options){var sequencer=fluid.promise.makeSequencer(listeners,options,fluid.remoteModelComponent.makeSequenceStrategy(payload));fluid.promise.resumeSequence(sequencer);return sequencer};fluid.remoteModelComponent.fireEventSequence=function(event,payload,options){var listeners=fluid.makeArray(event.sortedListeners);var sequence=fluid.remoteModelComponent.makeSequence(listeners,payload,options);return sequence.promise};fluid.remoteModelComponent.fetch=function(that){var promise=fluid.promise();var activePromise;if(that.pendingRequests.fetch){activePromise=that.pendingRequests.fetch;fluid.promise.follow(activePromise,promise)}else{activePromise=promise;that.pendingRequests.fetch=promise}if(!that.model.requestInFlight){var onFetchSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.onFetch);onFetchSeqPromise.then((function(){that.applier.change("requestInFlight",true);var reqPromise=that.fetchImpl();reqPromise.then((function(data){var afterFetchSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterFetch,data);fluid.promise.follow(afterFetchSeqPromise,activePromise)}),that.events.onFetchError.fire)}),that.events.onFetchError.fire)}return promise};fluid.remoteModelComponent.unblockFetchReq=function(that){that.pendingRequests.fetch=null;that.applier.change("requestInFlight",false)};fluid.remoteModelComponent.write=function(that){var promise=fluid.promise();var activePromise;if(that.pendingRequests.write){activePromise=that.pendingRequests.write;fluid.promise.follow(that.pendingRequests.write,promise)}else{activePromise=promise}if(that.model.requestInFlight){that.pendingRequests.write=activePromise}else{var onWriteSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.onWrite);onWriteSeqPromise.then((function(){that.applier.change("requestInFlight",true);that.pendingRequests.write=null;if(fluid.model.diff(that.model.local,that.model.remote)){var afterWriteSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterWrite,that.model.local);fluid.promise.follow(afterWriteSeqPromise,activePromise)}else{var reqPromise=that.writeImpl(that.model.local);reqPromise.then((function(data){var afterWriteSeqPromise=fluid.remoteModelComponent.fireEventSequence(that.events.afterWrite,data);fluid.promise.follow(afterWriteSeqPromise,activePromise)}),that.events.onWriteError.fire)}}),that.events.onWriteError.fire)}return promise}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.model.transform");fluid.defaults("fluid.transformFunction",{gradeNames:"fluid.function"});fluid.defaults("fluid.standardInputTransformFunction",{gradeNames:"fluid.transformFunction"});fluid.defaults("fluid.standardOutputTransformFunction",{gradeNames:"fluid.transformFunction"});fluid.defaults("fluid.multiInputTransformFunction",{gradeNames:"fluid.transformFunction"});fluid.defaults("fluid.standardTransformFunction",{gradeNames:["fluid.standardInputTransformFunction","fluid.standardOutputTransformFunction"]});fluid.defaults("fluid.lens",{gradeNames:"fluid.transformFunction",invertConfiguration:null});fluid.model.transform.pathToRule=function(inputPath){return{transform:{type:"fluid.transforms.value",inputPath:inputPath}}};fluid.model.transform.literalValueToRule=function(input){return{transform:{type:"fluid.transforms.literalValue",input:input}}};fluid.model.composePaths=function(prefix,suffix){prefix=prefix===0?"0":prefix||"";suffix=suffix===0?"0":suffix||"";return!prefix?suffix:!suffix?prefix:prefix+"."+suffix};fluid.model.transform.accumulateInputPath=function(inputPath,transformer,paths){if(inputPath!==undefined){paths.push(fluid.model.composePaths(transformer.inputPrefix,inputPath))}};fluid.model.transform.accumulateStandardInputPath=function(input,transformSpec,transformer,paths){fluid.model.transform.getValue(undefined,transformSpec[input],transformer);fluid.model.transform.accumulateInputPath(transformSpec[input+"Path"],transformer,paths)};fluid.model.transform.accumulateMultiInputPaths=function(inputVariables,transformSpec,transformer,paths){fluid.each(inputVariables,(function(v,k){fluid.model.transform.accumulateStandardInputPath(k,transformSpec,transformer,paths)}))};fluid.model.transform.getValue=function(inputPath,value,transformer){var togo;if(inputPath!==undefined){togo=fluid.get(transformer.source,fluid.model.composePaths(transformer.inputPrefix,inputPath),transformer.resolverGetConfig)}if(togo===undefined){togo=fluid.isPrimitive(value)?value:"literalValue"in value?value.literalValue:value.transform===undefined?value:transformer.expand(value)}return togo};fluid.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN={};fluid.model.transform.setValue=function(userOutputPath,value,transformer){var toset=fluid.copy(value);var outputPath=fluid.model.composePaths(transformer.outputPrefix,userOutputPath);if(toset!==undefined){transformer.applier.change(outputPath,toset)}return userOutputPath?fluid.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN:toset};fluid.model.transform.resolveParam=function(transformSpec,transformer,key,def){var val=fluid.model.transform.getValue(transformSpec[key+"Path"],transformSpec[key],transformer);return val!==undefined?val:def};fluid.model.transform.matchValue=function(expected,actual,partialMatches){var stats={changes:0,unchanged:0,changeMap:{}};fluid.model.diff(expected,actual,stats);return stats.unchanged===0?0:partialMatches?0xffffff000000-16777216*stats.changes+stats.unchanged:stats.changes?0:0xffffff000000+stats.unchanged};fluid.model.transform.invertPaths=function(transformSpec,transformer){var oldOutput=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath);transformSpec.outputPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.inputPath);transformSpec.inputPath=oldOutput;return transformSpec};fluid.model.transform.prefixApplier=function(transformSpec,transformer){if(transformSpec.inputPrefix){transformer.inputPrefixOp.push(transformSpec.inputPrefix)}if(transformSpec.outputPrefix){transformer.outputPrefixOp.push(transformSpec.outputPrefix)}transformer.expand(transformSpec.input);if(transformSpec.inputPrefix){transformer.inputPrefixOp.pop()}if(transformSpec.outputPrefix){transformer.outputPrefixOp.pop()}};fluid.defaults("fluid.model.transform.prefixApplier",{gradeNames:["fluid.transformFunction"]});fluid.model.makePathStack=function(transform,prefixName){var stack=transform[prefixName+"Stack"]=[];transform[prefixName]="";return{push:function(prefix){var newPath=fluid.model.composePaths(transform[prefixName],prefix);stack.push(transform[prefixName]);transform[prefixName]=newPath},pop:function(){transform[prefixName]=stack.pop()}}};fluid.model.transform.doTransform=function(transformSpec,transformer,transformOpts){var expdef=transformOpts.defaults;var transformFn=fluid.getGlobalValue(transformOpts.typeName);if(typeof transformFn!=="function"){fluid.fail("Transformation record specifies transformation function with name "+transformSpec.type+" which is not a function - ",transformFn)}if(!fluid.hasGrade(expdef,"fluid.transformFunction")){expdef=fluid.defaults("fluid.standardTransformFunction")}var transformArgs=[transformSpec,transformer];if(fluid.hasGrade(expdef,"fluid.multiInputTransformFunction")){var inputs={};fluid.each(expdef.inputVariables,(function(v,k){inputs[k]=function(){var input=fluid.model.transform.getValue(transformSpec[k+"Path"],transformSpec[k],transformer);input=input===undefined&&v!==null?v:input;return input}}));transformArgs.unshift(inputs)}if(fluid.hasGrade(expdef,"fluid.standardInputTransformFunction")){if(!("input"in transformSpec)&&!("inputPath"in transformSpec)){fluid.fail('Error in transform specification. Either "input" or "inputPath" must be specified for a standardInputTransformFunction: received ',transformSpec)}var expanded=fluid.model.transform.getValue(transformSpec.inputPath,transformSpec.input,transformer);transformArgs.unshift(expanded);if(expanded===undefined){return undefined}}var transformed=transformFn.apply(null,transformArgs);if(fluid.hasGrade(expdef,"fluid.standardOutputTransformFunction")){var outputPath=transformSpec.outputPath!==undefined?transformSpec.outputPath:transformOpts.doOutput?"":undefined;if(outputPath!==undefined&&transformed!==undefined){fluid.model.transform.setValue(transformSpec.outputPath,transformed,transformer);transformed=undefined}}return transformed};var globalAccept=[];fluid.registerNamespace("fluid.pathUtil");fluid.pathUtil.getPathSegment=function(path,i){fluid.pathUtil.getPathSegmentImpl(globalAccept,path,i);return globalAccept[0]};fluid.pathUtil.getHeadPath=function(path){return fluid.pathUtil.getPathSegment(path,0)};fluid.pathUtil.getFromHeadPath=function(path){var firstdot=fluid.pathUtil.getPathSegmentImpl(null,path,0);return firstdot===path.length?"":path.substring(firstdot+1)};fluid.pathUtil.matchPath=function(spec,path,exact){var togo=[];while(true){if(path===""^spec===""&&exact){return null}if(!spec||!path){break}var spechead=fluid.pathUtil.getHeadPath(spec);var pathhead=fluid.pathUtil.getHeadPath(path);if(spechead!=="*"&&spechead!==pathhead){return null}togo.push(pathhead);spec=fluid.pathUtil.getFromHeadPath(spec);path=fluid.pathUtil.getFromHeadPath(path)}return togo};fluid.model.transform.expandWildcards=function(transformer,source){fluid.each(source,(function(value,key){var q=transformer.queuedTransforms;transformer.pathOp.push(fluid.pathUtil.escapeSegment(key.toString()));for(var i=0;i<q.length;++i){if(fluid.pathUtil.matchPath(q[i].matchPath,transformer.path,true)){var esCopy=fluid.copy(q[i].transformSpec);if(esCopy.inputPath===undefined||fluid.model.transform.hasWildcard(esCopy.inputPath)){esCopy.inputPath=""}transformer.inputPrefixOp.push(transformer.path);transformer.outputPrefixOp.push(transformer.path);var transformOpts=fluid.model.transform.lookupType(esCopy.type);var result=fluid.model.transform.doTransform(esCopy,transformer,transformOpts);if(result!==undefined){fluid.model.transform.setValue(null,result,transformer)}transformer.outputPrefixOp.pop();transformer.inputPrefixOp.pop()}}if(!fluid.isPrimitive(value)){fluid.model.transform.expandWildcards(transformer,value)}transformer.pathOp.pop()}))};fluid.model.transform.hasWildcard=function(path){return typeof path==="string"&&path.indexOf("*")!==-1};fluid.model.transform.maybePushWildcard=function(transformSpec,transformer){var hw=fluid.model.transform.hasWildcard;var matchPath;if(hw(transformSpec.inputPath)){matchPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.inputPath)}else if(hw(transformer.outputPrefix)||hw(transformSpec.outputPath)){matchPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath)}if(matchPath){transformer.queuedTransforms.push({transformSpec:transformSpec,outputPrefix:transformer.outputPrefix,inputPrefix:transformer.inputPrefix,matchPath:matchPath});return true}return false};fluid.model.sortByKeyLength=function(inObject){var keys=fluid.keys(inObject);return keys.sort(fluid.compareStringLength(true))};fluid.model.transform.handleTransformStrategy=function(transformSpec,transformer,transformOpts){if(fluid.model.transform.maybePushWildcard(transformSpec,transformer)){return}else{return fluid.model.transform.doTransform(transformSpec,transformer,transformOpts)}};fluid.model.transform.handleInvertStrategy=function(transformSpec,transformer,transformOpts){transformSpec=fluid.copy(transformSpec);if(fluid.hasGrade(transformOpts.defaults,"fluid.standardTransformFunction")){transformSpec=fluid.model.transform.invertPaths(transformSpec,transformer)}var invertor=transformOpts.defaults&&transformOpts.defaults.invertConfiguration;if(invertor){var inverted=fluid.invokeGlobalFunction(invertor,[transformSpec,transformer]);transformer.inverted.push(inverted)}else{transformer.inverted.push(fluid.model.transform.uninvertibleTransform)}};fluid.model.transform.handleCollectStrategy=function(transformSpec,transformer,transformOpts){var defaults=transformOpts.defaults;var standardInput=fluid.hasGrade(defaults,"fluid.standardInputTransformFunction");var multiInput=fluid.hasGrade(defaults,"fluid.multiInputTransformFunction");if(standardInput){fluid.model.transform.accumulateStandardInputPath("input",transformSpec,transformer,transformer.inputPaths)}if(multiInput){fluid.model.transform.accumulateMultiInputPaths(defaults.inputVariables,transformSpec,transformer,transformer.inputPaths)}var collector=defaults.collectInputPaths;if(collector){var collected=fluid.makeArray(fluid.invokeGlobalFunction(collector,[transformSpec,transformer]));Array.prototype.push.apply(transformer.inputPaths,collected)}};fluid.model.transform.lookupType=function(typeName,transformSpec){if(!typeName){fluid.fail("Transformation record is missing a type name: ",transformSpec)}if(typeName.indexOf(".")===-1){typeName="fluid.transforms."+typeName}var defaults=fluid.defaults(typeName);return{defaults:defaults,typeName:typeName}};fluid.model.transform.processRule=function(rule,transformer){if(typeof rule==="string"){rule=fluid.model.transform.pathToRule(rule)}else if(rule.literalValue!==undefined){rule=fluid.model.transform.literalValueToRule(rule.literalValue)}var togo;if(rule.transform){var transformSpec,transformOpts;if(fluid.isArrayable(rule.transform)){var transforms=rule.transform;togo=undefined;for(var i=0;i<transforms.length;++i){transformSpec=transforms[i];transformOpts=fluid.model.transform.lookupType(transformSpec.type);transformer.transformHandler(transformSpec,transformer,transformOpts)}}else{transformSpec=rule.transform;transformOpts=fluid.model.transform.lookupType(transformSpec.type);togo=transformer.transformHandler(transformSpec,transformer,transformOpts)}}if(fluid.isArrayable(rule)){transformer.collectedFlatSchemaOpts=transformer.collectedFlatSchemaOpts||{};transformer.collectedFlatSchemaOpts[transformer.outputPrefix]="array"}fluid.each(rule,(function(value,key){if(key!=="transform"){transformer.outputPrefixOp.push(key);var togo=transformer.expand(value,transformer);if(togo!==undefined){fluid.model.transform.setValue(null,togo,transformer);togo=undefined}transformer.outputPrefixOp.pop()}}));return togo};fluid.model.transform.makeStrategy=function(transformer,handleFn,transformFn){transformFn=transformFn||fluid.model.transform.processRule;transformer.expand=function(rules){return transformFn(rules,transformer)};transformer.outputPrefixOp=fluid.model.makePathStack(transformer,"outputPrefix");transformer.inputPrefixOp=fluid.model.makePathStack(transformer,"inputPrefix");transformer.transformHandler=handleFn};fluid.model.transform.uninvertibleTransform=Object.freeze({});fluid.model.transform.invertConfiguration=function(rules){var transformer={inverted:[]};fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleInvertStrategy);transformer.expand(rules);var invertible=transformer.inverted.indexOf(fluid.model.transform.uninvertibleTransform)===-1;return invertible?{transform:transformer.inverted}:fluid.model.transform.uninvertibleTransform};fluid.model.transform.collectInputPaths=function(rules){var transformer={inputPaths:[]};fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleCollectStrategy);transformer.expand(rules);var inputPathHash=fluid.arrayToHash(transformer.inputPaths);return Object.keys(inputPathHash)};fluid.model.transform.flatSchemaStrategy=function(flatSchema,getConfig){var keys=fluid.model.sortByKeyLength(flatSchema);return function(root,segment,index,segs){var path=getConfig.parser.compose.apply(null,segs.slice(0,index));for(var i=0;i<keys.length;++i){var key=keys[i];if(fluid.pathUtil.matchPath(key,path,true)!==null){return flatSchema[key]}}}};fluid.model.transform.defaultSchemaValue=function(schemaValue){var type=fluid.isPrimitive(schemaValue)?schemaValue:schemaValue.type;return type==="array"?[]:{}};fluid.model.transform.isomorphicSchemaStrategy=function(source,getConfig){return function(root,segment,index,segs){var existing=fluid.get(source,segs.slice(0,index),getConfig);return fluid.isArrayable(existing)?"array":"object"}};fluid.model.transform.decodeStrategy=function(source,options,getConfig){if(options.isomorphic){return fluid.model.transform.isomorphicSchemaStrategy(source,getConfig)}else if(options.flatSchema){return fluid.model.transform.flatSchemaStrategy(options.flatSchema,getConfig)}};fluid.model.transform.schemaToCreatorStrategy=function(strategy){return function(root,segment,index,segs){if(root[segment]===undefined){var schemaValue=strategy(root,segment,index,segs);root[segment]=fluid.model.transform.defaultSchemaValue(schemaValue);return root[segment]}}};fluid.model.transform.sequence=function(source,rules,options){for(var i=0;i<rules.length;++i){source=fluid.model.transform(source,rules[i],options)}return source};fluid.model.compareByPathLength=function(changea,changeb){var pdiff=changea.path.length-changeb.path.length;return pdiff===0?changea.sequence-changeb.sequence:pdiff};fluid.model.fireSortedChanges=function(changes,applier){changes.sort(fluid.model.compareByPathLength);fluid.fireChanges(applier,changes)};fluid.model.transformWithRules=function(source,rules,options){options=options||{};var getConfig=fluid.model.escapedGetConfig;var setConfig=fluid.model.escapedSetConfig;var schemaStrategy=fluid.model.transform.decodeStrategy(source,options,getConfig);var transformer={source:source,target:{model:schemaStrategy?fluid.model.transform.defaultSchemaValue(schemaStrategy(null,"",0,[""])):{}},resolverGetConfig:getConfig,resolverSetConfig:setConfig,collectedFlatSchemaOpts:undefined,queuedChanges:[],queuedTransforms:[]};fluid.model.transform.makeStrategy(transformer,fluid.model.transform.handleTransformStrategy);transformer.applier={fireChangeRequest:function(changeRequest){changeRequest.sequence=transformer.queuedChanges.length;transformer.queuedChanges.push(changeRequest)}};fluid.bindRequestChange(transformer.applier);transformer.expand(rules);var rootSetConfig=fluid.copy(setConfig);if(transformer.collectedFlatSchemaOpts!==undefined){$.extend(transformer.collectedFlatSchemaOpts,options.flatSchema);schemaStrategy=fluid.model.transform.flatSchemaStrategy(transformer.collectedFlatSchemaOpts,getConfig)}rootSetConfig.strategies=[fluid.model.defaultFetchStrategy,schemaStrategy?fluid.model.transform.schemaToCreatorStrategy(schemaStrategy):fluid.model.defaultCreatorStrategy];transformer.finalApplier=options.finalApplier||fluid.makeHolderChangeApplier(transformer.target,{resolverSetConfig:rootSetConfig});if(transformer.queuedTransforms.length>0){transformer.typeStack=[];transformer.pathOp=fluid.model.makePathStack(transformer,"path");fluid.model.transform.expandWildcards(transformer,source)}fluid.model.fireSortedChanges(transformer.queuedChanges,transformer.finalApplier);return transformer.target.model};$.extend(fluid.model.transformWithRules,fluid.model.transform);fluid.model.transform=fluid.model.transformWithRules;fluid.transformOne=function(rules){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:rules}}};fluid.transformMany=function(rules){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:rules}}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.model.transform");fluid.registerNamespace("fluid.transforms");fluid.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.identity"});fluid.transforms.value=fluid.identity;fluid.transforms.identity=fluid.transforms.value;fluid.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"});fluid.transforms.invertToIdentity=function(transformSpec){transformSpec.type="fluid.transforms.identity";return transformSpec};fluid.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"});fluid.transforms.literalValue=function(transformSpec){return transformSpec.input};fluid.defaults("fluid.transforms.stringToNumber",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToNumber.invert"});fluid.transforms.stringToNumber=function(value){var newValue=Number(value);return isNaN(newValue)?undefined:newValue};fluid.transforms.stringToNumber.invert=function(transformSpec){transformSpec.type="fluid.transforms.numberToString";return transformSpec};fluid.defaults("fluid.transforms.numberToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.numberToString.invert"});fluid.transforms.numberToString=function(value,transformSpec){if(typeof value==="number"){if(typeof transformSpec.scale==="number"&&!isNaN(transformSpec.scale)){var rounded=fluid.roundToDecimal(value,transformSpec.scale,transformSpec.method);return rounded.toString()}else{return value.toString()}}};fluid.transforms.numberToString.invert=function(transformSpec){transformSpec.type="fluid.transforms.stringToNumber";return transformSpec};fluid.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"});fluid.transforms.count=function(value){return fluid.makeArray(value).length};fluid.defaults("fluid.transforms.round",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.invertToIdentity"});fluid.transforms.round=function(value,transformSpec){return fluid.roundToDecimal(value,transformSpec.scale,transformSpec.method)};fluid.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"});fluid.transforms["delete"]=function(transformSpec,transformer){var outputPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.outputPath);transformer.applier.change(outputPath,null,"DELETE")};fluid.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.standardOutputTransformFunction"});fluid.transforms.firstValue=function(transformSpec,transformer){if(!transformSpec.values||!transformSpec.values.length){fluid.fail('firstValue transformer requires an array of values at path named "values", supplied',transformSpec)}for(var i=0;i<transformSpec.values.length;i++){var value=transformSpec.values[i];var expanded=transformer.expand(value);if(expanded!==undefined){return expanded}}};fluid.defaults("fluid.transforms.linearScale",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.linearScale.invert",inputVariables:{factor:1,offset:0}});fluid.transforms.linearScale=function(input,extraInputs){var factor=extraInputs.factor();var offset=extraInputs.offset();if(typeof input!=="number"||typeof factor!=="number"||typeof offset!=="number"){return undefined}return input*factor+offset};fluid.transforms.linearScale.invert=function(transformSpec){delete transformSpec.factorPath;delete transformSpec.offsetPath;if(transformSpec.factor!==undefined){transformSpec.factor=transformSpec.factor===0?0:1/transformSpec.factor}if(transformSpec.offset!==undefined){transformSpec.offset=-transformSpec.offset*(transformSpec.factor!==undefined?transformSpec.factor:1)}return transformSpec};fluid.defaults("fluid.transforms.binaryOp",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{left:null,right:null}});fluid.transforms.binaryLookup={"===":function(a,b){return fluid.model.isSameValue(a,b)},"!==":function(a,b){return!fluid.model.isSameValue(a,b)},"<=":function(a,b){return a<=b},"<":function(a,b){return a<b},">=":function(a,b){return a>=b},">":function(a,b){return a>b},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}};fluid.transforms.binaryOp=function(inputs,transformSpec,transformer){var left=inputs.left();var right=inputs.right();var operator=fluid.model.transform.getValue(undefined,transformSpec.operator,transformer);var fun=fluid.transforms.binaryLookup[operator];return fun===undefined||left===undefined||right===undefined?undefined:fun(left,right)};fluid.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{true:null,false:null,condition:null}});fluid.transforms.condition=function(inputs){var condition=inputs.condition();if(condition===null){return undefined}return inputs[condition?"true":"false"]()};fluid.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"});fluid.model.transform.compareMatches=function(speca,specb){var matchDiff=specb.matchValue-speca.matchValue;return matchDiff===0?speca.index-specb.index:matchDiff};fluid.transforms.valueMapper=function(transformSpec,transformer){if(!transformSpec.match){fluid.fail('valueMapper requires an array or hash of matches at path named "match", supplied ',transformSpec)}var value=fluid.model.transform.getValue(transformSpec.defaultInputPath,transformSpec.defaultInput,transformer);var matchedEntry=fluid.isArrayable(transformSpec.match)?fluid.transforms.valueMapper.longFormMatch(value,transformSpec,transformer):transformSpec.match[value];if(matchedEntry===undefined){matchedEntry=transformSpec.noMatch}if(matchedEntry===undefined){return}var outputPath=matchedEntry.outputPath===undefined?transformSpec.defaultOutputPath:matchedEntry.outputPath;transformer.outputPrefixOp.push(outputPath);var outputValue;if(fluid.isPrimitive(matchedEntry)){outputValue=matchedEntry}else if(matchedEntry.outputUndefinedValue){outputValue=undefined}else{outputValue=fluid.model.transform.resolveParam(matchedEntry,transformer,"outputValue",undefined);outputValue=outputValue===undefined?transformSpec.defaultOutputValue:outputValue}if(typeof outputPath==="string"&&outputValue!==undefined){fluid.model.transform.setValue(undefined,outputValue,transformer,transformSpec.merge);outputValue=undefined}transformer.outputPrefixOp.pop();return outputValue};fluid.transforms.valueMapper.longFormMatch=function(valueFromDefaultPath,transformSpec,transformer){var o=transformSpec.match;if(o.length===0){fluid.fail("valueMapper supplied empty list of matches: ",transformSpec)}var matchPower=[];for(var i=0;i<o.length;++i){var option=o[i];var value=option.inputPath?fluid.model.transform.getValue(option.inputPath,undefined,transformer):valueFromDefaultPath;var matchValue=fluid.model.transform.matchValue(option.inputValue,value,option.partialMatches);matchPower[i]={index:i,matchValue:matchValue}}matchPower.sort(fluid.model.transform.compareMatches);return matchPower[0].matchValue<=0?undefined:o[matchPower[0].index]};fluid.transforms.valueMapper.invert=function(transformSpec,transformer){var match=[];var togo={type:"fluid.transforms.valueMapper",match:match};var isArray=fluid.isArrayable(transformSpec.match);togo.defaultInputPath=fluid.model.composePaths(transformer.outputPrefix,transformSpec.defaultOutputPath);togo.defaultOutputPath=fluid.model.composePaths(transformer.inputPrefix,transformSpec.defaultInputPath);var def=fluid.firstDefined;fluid.each(transformSpec.match,(function(option,key){if(option.outputUndefinedValue===true){return}var outOption={};var origInputValue=def(isArray?option.inputValue:key,transformSpec.defaultInputValue);if(origInputValue===undefined){fluid.fail("Failure inverting configuration for valueMapper - inputValue could not be resolved for record "+key+": ",transformSpec)}outOption.outputValue=origInputValue;outOption.inputValue=!isArray&&fluid.isPrimitive(option)?option:def(option.outputValue,transformSpec.defaultOutputValue);if(option.outputPath){outOption.inputPath=fluid.model.composePaths(transformer.outputPrefix,def(option.outputPath,transformSpec.outputPath))}if(option.inputPath){outOption.outputPath=fluid.model.composePaths(transformer.inputPrefix,def(option.inputPath,transformSpec.inputPath))}match.push(outOption)}));return togo};fluid.transforms.valueMapper.collect=function(transformSpec,transformer){var togo=[];fluid.model.transform.accumulateStandardInputPath("defaultInput",transformSpec,transformer,togo);fluid.each(transformSpec.match,(function(option){fluid.model.transform.accumulateInputPath(option.inputPath,transformer,togo)}));return togo};fluid.defaults("fluid.transforms.arrayToSetMembership",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToSetMembership.invert"});fluid.transforms.arrayToSetMembership=function(value,transformSpec){if(!value||!fluid.isArrayable(value)){fluid.fail("arrayToSetMembership didn't find array at inputPath nor passed as value.")}var output={};transformSpec=transformSpec||{};var presentValue=transformSpec.presentValue===undefined?true:transformSpec.presentValue,missingValue=transformSpec.missingValue===undefined?false:transformSpec.missingValue,options=transformSpec.options;if(options===undefined){fluid.each(value,(function(outPath){output[outPath]=presentValue}))}else{fluid.each(options,(function(outPath,key){var outVal=value.indexOf(key)!==-1?presentValue:missingValue;output[outPath]=outVal}))}return output};fluid.transforms.arrayToSetMembership.invert=function(transformSpec){return fluid.transforms.arrayToSetMembership.invertWithType(transformSpec,"fluid.transforms.setMembershipToArray")};fluid.transforms.arrayToSetMembership.invertWithType=function(transformSpec,newType){transformSpec.type=newType;var newOptions={};fluid.each(transformSpec.options,(function(path,oldKey){newOptions[path]=oldKey}));if(!$.isEmptyObject(newOptions)){transformSpec.options=newOptions}return transformSpec};fluid.defaults("fluid.transforms.setMembershipToArray",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.setMembershipToArray.invert"});fluid.transforms.setMembershipToArray=function(input,transformSpec){if(!fluid.isPlainObject(input,true)){fluid.fail("setMembershipToArray didn't find object at inputPath nor passed as value.")}var outputArr=[];transformSpec=transformSpec||{};var presentValue=transformSpec.presentValue===undefined?true:transformSpec.presentValue,options=transformSpec.options;if(options===undefined){fluid.each(input,(function(keyValue,outputVal){if(keyValue===presentValue){outputArr.push(outputVal)}}))}else{fluid.each(options,(function(outputVal,key){if(input[key]===presentValue){outputArr.push(outputVal)}}))}return outputArr};fluid.transforms.setMembershipToArray.invert=function(transformSpec){return fluid.transforms.arrayToSetMembership.invertWithType(transformSpec,"fluid.transforms.arrayToSetMembership")};fluid.model.transform.applyPaths=function(operation,pathOp,paths){for(var i=0;i<paths.length;++i){if(operation==="push"){pathOp.push(paths[i])}else{pathOp.pop()}}};fluid.model.transform.expandInnerValues=function(inputPath,outputPath,transformer,innerValues){var inputPrefixOp=transformer.inputPrefixOp;var outputPrefixOp=transformer.outputPrefixOp;var apply=fluid.model.transform.applyPaths;apply("push",inputPrefixOp,inputPath);apply("push",outputPrefixOp,outputPath);var expanded={};fluid.each(innerValues,(function(innerValue){var expandedInner=transformer.expand(innerValue);if(!fluid.isPrimitive(expandedInner)){$.extend(true,expanded,expandedInner)}else{expanded=expandedInner}}));apply("pop",outputPrefixOp,outputPath);apply("pop",inputPrefixOp,inputPath);return expanded};fluid.defaults("fluid.transforms.indexArrayByKey",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.indexArrayByKey.invert"});fluid.transforms.indexArrayByKey=function(arr,transformSpec,transformer){if(transformSpec.key===undefined){fluid.fail("indexArrayByKey requires a 'key' option.",transformSpec)}if(!fluid.isArrayable(arr)){fluid.fail("indexArrayByKey didn't find array at inputPath.",transformSpec)}var newHash={};var pivot=transformSpec.key;fluid.each(arr,(function(v,k){var newKey=v[pivot];var keyType=typeof newKey;if(keyType!=="string"&&keyType!=="boolean"&&keyType!=="number"){fluid.fail("indexArrayByKey encountered untransformable array due to missing or invalid key",v)}var content=fluid.copy(v);delete content[pivot];if(transformSpec.innerValue){content=fluid.model.transform.expandInnerValues([transformer.inputPrefix,transformSpec.inputPath,k.toString()],[transformSpec.outputPath,newKey],transformer,transformSpec.innerValue)}newHash[newKey]=content}));return newHash};fluid.transforms.indexArrayByKey.invert=function(transformSpec){transformSpec.type="fluid.transforms.deindexIntoArrayByKey";if(transformSpec.innerValue){var innerValue=transformSpec.innerValue;for(var i=0;i<innerValue.length;++i){var inverted=fluid.model.transform.invertConfiguration(innerValue[i]);if(inverted===fluid.model.transform.uninvertibleTransform){return inverted}else{innerValue[i]=inverted}}}return transformSpec};fluid.defaults("fluid.transforms.deindexIntoArrayByKey",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.deindexIntoArrayByKey.invert"});fluid.transforms.deindexIntoArrayByKey=function(hash,transformSpec,transformer){if(transformSpec.key===undefined){fluid.fail('deindexIntoArrayByKey requires a "key" option.',transformSpec)}var newArray=[];var pivot=transformSpec.key;fluid.each(hash,(function(v,k){var content={};content[pivot]=k;if(transformSpec.innerValue){v=fluid.model.transform.expandInnerValues([transformSpec.inputPath,k],[transformSpec.outputPath,newArray.length.toString()],transformer,transformSpec.innerValue)}$.extend(true,content,v);newArray.push(content)}));return newArray};fluid.transforms.deindexIntoArrayByKey.invert=function(transformSpec){transformSpec.type="fluid.transforms.indexArrayByKey";if(transformSpec.innerValue){var innerValue=transformSpec.innerValue;for(var i=0;i<innerValue.length;++i){innerValue[i]=fluid.model.transform.invertConfiguration(innerValue[i])}}return transformSpec};fluid.defaults("fluid.transforms.limitRange",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.invertToIdentity"});fluid.transforms.limitRange=function(value,transformSpec){var min=transformSpec.min;if(min!==undefined){var excludeMin=transformSpec.excludeMin||0;min+=excludeMin;if(value<min){value=min}}var max=transformSpec.max;if(max!==undefined){var excludeMax=transformSpec.excludeMax||0;max-=excludeMax;if(value>max){value=max}}return value};fluid.defaults("fluid.transforms.indexOf",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.indexOf.invert"});fluid.transforms.indexOf=function(value,transformSpec){if(typeof transformSpec.notFound==="number"&&transformSpec.notFound>=0){fluid.fail("A positive number is not allowed as 'notFound' value for indexOf")}var offset=fluid.transforms.parseIndexationOffset(transformSpec.offset,"indexOf");var array=fluid.makeArray(transformSpec.array);var originalIndex=array.indexOf(value);return originalIndex===-1&&transformSpec.notFound?transformSpec.notFound:originalIndex+offset};fluid.transforms.indexOf.invert=function(transformSpec,transformer){var togo=fluid.transforms.invertArrayIndexation(transformSpec,transformer);togo.type="fluid.transforms.dereference";return togo};fluid.defaults("fluid.transforms.dereference",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dereference.invert"});fluid.transforms.dereference=function(value,transformSpec){if(typeof value!=="number"){return undefined}var offset=fluid.transforms.parseIndexationOffset(transformSpec.offset,"dereference");var array=fluid.makeArray(transformSpec.array);var index=value+offset;return array[index]};fluid.transforms.dereference.invert=function(transformSpec,transformer){var togo=fluid.transforms.invertArrayIndexation(transformSpec,transformer);togo.type="fluid.transforms.indexOf";return togo};fluid.transforms.parseIndexationOffset=function(offset,transformName){var parsedOffset=0;if(offset!==undefined){parsedOffset=fluid.parseInteger(offset);if(isNaN(parsedOffset)){fluid.fail(transformName+' requires the value of "offset" to be an integer or a string that can be converted to an integer. '+offset+" is invalid.")}}return parsedOffset};fluid.transforms.invertArrayIndexation=function(transformSpec){if(!isNaN(Number(transformSpec.offset))){transformSpec.offset=Number(transformSpec.offset)*-1}return transformSpec};fluid.defaults("fluid.transforms.stringTemplate",{gradeNames:"fluid.standardOutputTransformFunction"});fluid.transforms.stringTemplate=function(transformSpec){return fluid.stringTemplate(transformSpec.template,transformSpec.terms)};fluid.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"});fluid.transforms.free=function(transformSpec){var args=fluid.makeArray(transformSpec.args);return fluid.invokeGlobalFunction(transformSpec.func,args)};fluid.defaults("fluid.transforms.quantize",{gradeNames:"fluid.standardTransformFunction",collectInputPaths:"fluid.transforms.quantize.collect"});fluid.transforms.quantize=function(value,transformSpec,transformer){if(!transformSpec.ranges||!transformSpec.ranges.length){fluid.fail("fluid.transforms.quantize should have a key called ranges containing an array defining ranges to quantize")}for(var i=0;i<transformSpec.ranges.length;i++){var rangeSpec=transformSpec.ranges[i];if(value<=rangeSpec.upperBound||rangeSpec.upperBound===undefined&&value>=Number.NEGATIVE_INFINITY){return fluid.isPrimitive(rangeSpec.output)?rangeSpec.output:transformer.expand(rangeSpec.output)}}};fluid.transforms.quantize.collect=function(transformSpec,transformer){transformSpec.ranges.forEach((function(rangeSpec){if(!fluid.isPrimitive(rangeSpec.output)){transformer.expand(rangeSpec.output)}}))};fluid.defaults("fluid.transforms.inRange",{gradeNames:"fluid.standardTransformFunction"});fluid.transforms.inRange=function(value,transformSpec){return(transformSpec.min===undefined||transformSpec.min<=value)&&(transformSpec.max===undefined||transformSpec.max>=value)?true:false};fluid.transforms.stringToBoolean=function(value){if(value){return!(value==="0"||value==="false")}else{return false}};fluid.transforms.stringToBoolean.invert=function(transformSpec){transformSpec.type="fluid.transforms.booleanToString";return transformSpec};fluid.defaults("fluid.transforms.stringToBoolean",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToBoolean.invert"});fluid.transforms.booleanToString=function(value){return value?"true":"false"};fluid.transforms.booleanToString.invert=function(transformSpec){transformSpec.type="fluid.transforms.stringToBoolean";return transformSpec};fluid.defaults("fluid.transforms.booleanToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.booleanToString.invert"});fluid.transforms.JSONstringToObject=function(value){try{return JSON.parse(value)}catch(e){return undefined}};fluid.transforms.JSONstringToObject.invert=function(transformSpec){transformSpec.type="fluid.transforms.objectToJSONString";return transformSpec};fluid.defaults("fluid.transforms.JSONstringToObject",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.JSONstringToObject.invert"});fluid.transforms.objectToJSONString=function(value,transformSpec){var space=transformSpec.space||0;return JSON.stringify(value,null,space)};fluid.transforms.objectToJSONString.invert=function(transformSpec){transformSpec.type="fluid.transforms.JSONstringToObject";return transformSpec};fluid.defaults("fluid.transforms.objectToJSONString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.objectToJSONString.invert"});fluid.transforms.stringToDate=function(value){var date=new Date(value);return isNaN(date.getTime())?undefined:date};fluid.transforms.stringToDate.invert=function(transformSpec){transformSpec.type="fluid.transforms.dateToString";return transformSpec};fluid.defaults("fluid.transforms.stringToDate",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.stringToDate.invert"});fluid.transforms.dateToString=function(value){if(value instanceof Date){var isoString=value.toISOString();var dateString=isoString.substring(0,isoString.indexOf("T"));return dateString}else{return undefined}};fluid.transforms.dateToString.invert=function(transformSpec){transformSpec.type="fluid.transforms.stringToDate";return transformSpec};fluid.defaults("fluid.transforms.dateToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dateToString.invert"});fluid.transforms.dateTimeToString=function(value){return value instanceof Date?value.toISOString():undefined};fluid.defaults("fluid.transforms.dateTimeToString",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.dateToString.invert"})})(jQuery,fluid_3_0_0);var fluid_3_0_0=fluid_3_0_0||{};var fluid=fluid||fluid_3_0_0;(function($,fluid){"use strict";fluid.thatistBridge=function(name,peer){var togo=function(funcname){var segs=funcname.split(".");var move=peer;for(var i=0;i<segs.length;++i){move=move[segs[i]]}var args=[this];if(arguments.length===2){args=args.concat($.makeArray(arguments[1]))}var ret=move.apply(null,args);this.that=function(){return ret};return ret&&ret.constructor&&ret.constructor.name==="fluid.componentConstructor"?this:ret};$.fn[name]=togo;return togo};fluid.thatistBridge("fluid",fluid);fluid.thatistBridge("fluid_3_0_0",fluid_3_0_0);var normalizeTabindexName=function(){return $.browser.msie?"tabIndex":"tabindex"};var canHaveDefaultTabindex=function(elements){if(elements.length<=0){return false}return $(elements[0]).is("a, input, button, select, area, textarea, object")};var getValue=function(elements){if(elements.length<=0){return undefined}if(!fluid.tabindex.hasAttr(elements)){return canHaveDefaultTabindex(elements)?Number(0):undefined}var value=elements.attr(normalizeTabindexName());return Number(value)};var setValue=function(elements,toIndex){return elements.each((function(i,item){$(item).attr(normalizeTabindexName(),toIndex)}))};fluid.tabindex=function(target,toIndex){target=$(target);if(toIndex!==null&&toIndex!==undefined){return setValue(target,toIndex)}else{return getValue(target)}};fluid.tabindex.remove=function(target){target=$(target);return target.each((function(i,item){$(item).removeAttr(normalizeTabindexName())}))};fluid.tabindex.hasAttr=function(target){target=$(target);if(target.length<=0){return false}var togo=target.map((function(){var attributeNode=this.getAttributeNode(normalizeTabindexName());return attributeNode?attributeNode.specified:false}));return togo.length===1?togo[0]:togo};fluid.tabindex.has=function(target){target=$(target);return fluid.tabindex.hasAttr(target)||canHaveDefaultTabindex(target)};fluid.a11y=$.a11y||{};fluid.a11y.orientation={HORIZONTAL:0,VERTICAL:1,BOTH:2};var UP_DOWN_KEYMAP={next:$.ui.keyCode.DOWN,previous:$.ui.keyCode.UP};var LEFT_RIGHT_KEYMAP={next:$.ui.keyCode.RIGHT,previous:$.ui.keyCode.LEFT};var unwrap=function(element){return element.jquery?element[0]:element};var makeElementsTabFocussable=function(elements){elements.each((function(idx,item){item=$(item);if(!item.fluid("tabindex.has")||item.fluid("tabindex")<0){item.fluid("tabindex",0)}}))};fluid.tabbable=function(target){target=$(target);makeElementsTabFocussable(target)};var CONTEXT_KEY="selectionContext";var NO_SELECTION=-32768;var cleanUpWhenLeavingContainer=function(selectionContext){if(selectionContext.activeItemIndex!==NO_SELECTION){if(selectionContext.options.onLeaveContainer){selectionContext.options.onLeaveContainer(selectionContext.selectables[selectionContext.activeItemIndex])}else if(selectionContext.options.onUnselect){selectionContext.options.onUnselect(selectionContext.selectables[selectionContext.activeItemIndex])}}if(!selectionContext.options.rememberSelectionState){selectionContext.activeItemIndex=NO_SELECTION}};var drawSelection=function(elementToSelect,handler){if(handler){handler(elementToSelect)}};var eraseSelection=function(selectedElement,handler){if(handler&&selectedElement){handler(selectedElement)}};var unselectElement=function(selectedElement,selectionContext){eraseSelection(selectedElement,selectionContext.options.onUnselect)};var selectElement=function(elementToSelect,selectionContext){unselectElement(selectionContext.selectedElement(),selectionContext);elementToSelect=unwrap(elementToSelect);var newIndex=selectionContext.selectables.index(elementToSelect);if(newIndex===-1){return}selectionContext.activeItemIndex=newIndex;drawSelection(elementToSelect,selectionContext.options.onSelect)};var selectableFocusHandler=function(selectionContext){return function(evt){$(evt.target).fluid("tabindex",0);selectElement(evt.target,selectionContext);return evt.stopPropagation()}};var selectableBlurHandler=function(selectionContext){return function(evt){$(evt.target).fluid("tabindex",selectionContext.options.selectablesTabindex);unselectElement(evt.target,selectionContext);return evt.stopPropagation()}};var reifyIndex=async function(sc_that){var elements=sc_that.selectables;if(sc_that.activeItemIndex>=elements.length){sc_that.activeItemIndex=sc_that.options.noWrap?elements.length-1:0}if(sc_that.activeItemIndex<0&&sc_that.activeItemIndex!==NO_SELECTION){sc_that.activeItemIndex=sc_that.options.noWrap?0:elements.length-1}if(sc_that.activeItemIndex>=0){return fluid.focus(elements[sc_that.activeItemIndex])}};var prepareShift=async function(selectionContext){var selElm=selectionContext.selectedElement();if(selElm){await fluid.blur(selElm)}unselectElement(selectionContext.selectedElement(),selectionContext);if(selectionContext.activeItemIndex===NO_SELECTION){selectionContext.activeItemIndex=-1}};var focusNextElement=async function(selectionContext){await prepareShift(selectionContext);++selectionContext.activeItemIndex;return reifyIndex(selectionContext)};var focusPreviousElement=async function(selectionContext){await prepareShift(selectionContext);--selectionContext.activeItemIndex;return reifyIndex(selectionContext)};var arrowKeyHandler=function(selectionContext,keyMap){return async function(evt){if(evt.which===keyMap.next){await focusNextElement(selectionContext);evt.preventDefault()}else if(evt.which===keyMap.previous){await focusPreviousElement(selectionContext);evt.preventDefault()}}};var getKeyMapForDirection=function(direction){var keyMap;if(direction===fluid.a11y.orientation.HORIZONTAL){keyMap=LEFT_RIGHT_KEYMAP}else if(direction===fluid.a11y.orientation.VERTICAL){keyMap=UP_DOWN_KEYMAP}return keyMap};var tabKeyHandler=function(selectionContext){return function(evt){if(evt.which!==$.ui.keyCode.TAB){return}cleanUpWhenLeavingContainer(selectionContext);if(evt.shiftKey){selectionContext.focusIsLeavingContainer=true}}};var containerFocusHandler=function(selectionContext){return async function(evt){var shouldOrig=selectionContext.options.autoSelectFirstItem;var shouldSelect=typeof shouldOrig==="function"?shouldOrig():shouldOrig;if(selectionContext.focusIsLeavingContainer){shouldSelect=false}if(shouldSelect&&evt.target===selectionContext.container.get(0)){if(selectionContext.activeItemIndex===NO_SELECTION){selectionContext.activeItemIndex=0}await fluid.focus(selectionContext.selectables[selectionContext.activeItemIndex])}return evt.stopPropagation()}};var containerBlurHandler=function(selectionContext){return function(evt){selectionContext.focusIsLeavingContainer=false;return evt.stopPropagation()}};var makeElementsSelectable=function(container,defaults,userOptions){var options=$.extend(true,{},defaults,userOptions);var keyMap=getKeyMapForDirection(options.direction);var selectableElements=options.selectableElements?options.selectableElements:container.find(options.selectableSelector);var that={container:container,activeItemIndex:NO_SELECTION,selectables:selectableElements,focusIsLeavingContainer:false,options:options};that.selectablesUpdated=async function(focusedItem){if(typeof that.options.selectablesTabindex==="number"){that.selectables.fluid("tabindex",that.options.selectablesTabindex)}that.selectables.off("focus."+CONTEXT_KEY);that.selectables.off("blur."+CONTEXT_KEY);that.selectables.on("focus."+CONTEXT_KEY,selectableFocusHandler(that));that.selectables.on("blur."+CONTEXT_KEY,selectableBlurHandler(that));if(keyMap&&that.options.noBubbleListeners){that.selectables.off("keydown."+CONTEXT_KEY);that.selectables.on("keydown."+CONTEXT_KEY,arrowKeyHandler(that,keyMap))}if(focusedItem){selectElement(focusedItem,that)}else{return reifyIndex(that)}};that.refresh=async function(){if(!that.options.selectableSelector){fluid.fail("Cannot refresh selectable context which was not initialised by a selector")}that.selectables=container.find(options.selectableSelector);return that.selectablesUpdated()};that.selectedElement=function(){return that.activeItemIndex<0?null:that.selectables[that.activeItemIndex]};if(keyMap&&!that.options.noBubbleListeners){container.on("keydown",arrowKeyHandler(that,keyMap))}container.on("keydown",tabKeyHandler(that));container.on("focus",containerFocusHandler(that));container.on("blur",containerBlurHandler(that));that.promise=that.selectablesUpdated();return that};fluid.selectable=function(target,options){target=$(target);var that=makeElementsSelectable(target,fluid.selectable.defaults,options);fluid.setScopedData(target,CONTEXT_KEY,that);return that};fluid.selectable.select=async function(target,toSelect){return fluid.focus(toSelect)};fluid.selectable.selectNext=async function(target){target=$(target);return focusNextElement(fluid.getScopedData(target,CONTEXT_KEY))};fluid.selectable.selectPrevious=async function(target){target=$(target);return focusPreviousElement(fluid.getScopedData(target,CONTEXT_KEY))};fluid.selectable.currentSelection=function(target){target=$(target);var that=fluid.getScopedData(target,CONTEXT_KEY);return $(that.selectedElement())};fluid.selectable.defaults={direction:fluid.a11y.orientation.VERTICAL,selectablesTabindex:-1,autoSelectFirstItem:true,rememberSelectionState:true,selectableSelector:".selectable",selectableElements:null,onSelect:null,onUnselect:null,onLeaveContainer:null,noWrap:false};var checkForModifier=function(binding,evt){if(!binding.modifier){return true}var modifierKey=binding.modifier;var isCtrlKeyPresent=modifierKey&&evt.ctrlKey;var isAltKeyPresent=modifierKey&&evt.altKey;var isShiftKeyPresent=modifierKey&&evt.shiftKey;return isCtrlKeyPresent||isAltKeyPresent||isShiftKeyPresent};var makeActivationHandler=function(binding){return function(evt){var target=evt.target;if(!fluid.enabled(target)){return}var code=evt.which?evt.which:evt.keyCode;if(code===binding.key&&binding.activateHandler&&checkForModifier(binding,evt)){var event=$.Event("fluid-activate");$(target).trigger(event,[binding.activateHandler]);if(event.isDefaultPrevented()){evt.preventDefault()}}}};var makeElementsActivatable=function(elements,onActivateHandler,defaultKeys,options){var bindings=[];$(defaultKeys).each((function(index,key){bindings.push({modifier:null,key:key,activateHandler:onActivateHandler})}));if(options&&options.additionalBindings){bindings=bindings.concat(options.additionalBindings)}fluid.initEnablement(elements);for(var i=0;i<bindings.length;++i){var binding=bindings[i];elements.on("keydown",makeActivationHandler(binding))}elements.on("fluid-activate",(function(evt,handler){handler=handler||onActivateHandler;return handler?handler(evt):null}))};fluid.activatable=function(target,fn,options){target=$(target);makeElementsActivatable(target,fn,fluid.activatable.defaults.keys,options)};fluid.activate=function(target){$(target).trigger("fluid-activate")};fluid.activatable.defaults={keys:[$.ui.keyCode.ENTER,$.ui.keyCode.SPACE]}})(jQuery,fluid_3_0_0);var fluid_3_0_0=fluid_3_0_0||{};(function($,fluid){"use strict";fluid.defaults("fluid.viewComponent",{gradeNames:["fluid.modelComponent"],initFunction:"fluid.initView",argumentMap:{container:0,options:1},members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors)"}});fluid.dumpSelector=function(selectable){return typeof selectable==="string"?selectable:selectable.selector?selectable.selector:""};fluid.diagnoseFailedView=function(componentName,that,options,args){if(!that&&fluid.hasGrade(options,"fluid.viewComponent")){var container=fluid.wrap(args[1]);var message1="Instantiation of view component with type "+componentName+" failed, since ";if(!container){fluid.fail(message1+" container argument is empty")}else if(container.length===0){fluid.fail(message1+'selector "',fluid.dumpSelector(args[1]),'" did not match any markup in the document')}else{fluid.fail(message1+" component creator function did not return a value")}}};fluid.checkTryCatchParameter=function(){var location=window.location||{search:"",protocol:"file:"};var GETparams=location.search.slice(1).split("&");return fluid.find(GETparams,(function(param){if(param.indexOf("notrycatch")===0){return true}}))===true};fluid.notrycatch=fluid.checkTryCatchParameter();fluid.wrap=function(obj,userJQuery){userJQuery=userJQuery||$;return!obj||obj.jquery?obj:userJQuery(obj)};fluid.unwrap=function(obj){return obj&&obj.jquery?obj[0]:obj};fluid.container=function(containerSpec,fallible,userJQuery){var selector=containerSpec.selector||containerSpec;if(userJQuery){containerSpec=fluid.unwrap(containerSpec)}var container=fluid.wrap(containerSpec,userJQuery);if(fallible&&(!container||container.length===0)){return null}if(!container||!container.jquery||container.length!==1){if(typeof containerSpec!=="string"){containerSpec=container.selector}var count=container.length!==undefined?container.length:0;fluid.fail((count>1?"More than one ("+count+") container elements were":"No container element was")+" found for selector "+containerSpec)}if(!fluid.isDOMNode(container[0])){fluid.fail("fluid.container was supplied a non-jQueryable element")}container.selector=selector;container.context=container.context||containerSpec.ownerDocument||document;return container};fluid.createDomBinder=function(container,selectors){var that={id:fluid.allocateGuid(),cache:{}};var userJQuery=container.constructor;function cacheKey(name,thisContainer){return fluid.allocateSimpleId(thisContainer)+"-"+name}function record(name,thisContainer,result){that.cache[cacheKey(name,thisContainer)]=result}that.locate=function(name,localContainer){var selector,thisContainer,togo;selector=selectors[name];if(selector===undefined){return undefined}thisContainer=localContainer?$(localContainer):container;if(!thisContainer){fluid.fail("DOM binder invoked for selector "+name+" without container")}if(selector===""){togo=thisContainer}else if(!selector){togo=userJQuery()}else{if(typeof selector==="function"){togo=userJQuery(selector.call(null,fluid.unwrap(thisContainer)))}else{togo=userJQuery(selector,thisContainer)}}if(!togo.selector){togo.selector=selector;togo.context=thisContainer}togo.selectorName=name;record(name,thisContainer,togo);return togo};that.fastLocate=function(name,localContainer){var thisContainer=localContainer?localContainer:container;var key=cacheKey(name,thisContainer);var togo=that.cache[key];return togo?togo:that.locate(name,localContainer)};that.clear=function(){that.cache={}};that.refresh=function(names,localContainer){var thisContainer=localContainer?localContainer:container;if(typeof names==="string"){names=[names]}if(thisContainer.length===undefined){thisContainer=[thisContainer]}for(var i=0;i<names.length;++i){for(var j=0;j<thisContainer.length;++j){that.locate(names[i],thisContainer[j])}}};that.resolvePathSegment=that.locate;return that};fluid.expectFilledSelector=function(result,message){if(result&&result.length===0&&result.jquery){fluid.fail(message+': selector "'+result.selector+'" with name '+result.selectorName+" returned no results in context "+fluid.dumpEl(result.context))}};fluid.initView=function(componentName,containerSpec,userOptions,localOptions){var container=fluid.container(containerSpec,true);fluid.expectFilledSelector(container,'Error instantiating component with name "'+componentName);if(!container){return null}var receiver=function(that){that.container=container};var that=fluid.initLittleComponent(componentName,userOptions,localOptions||{gradeNames:["fluid.viewComponent"]},receiver);if(!that.dom){fluid.initDomBinder(that)}var userJQuery=that.options.jQuery;fluid.log("Constructing view component "+componentName+" with container "+container.constructor.expando+(userJQuery?" user jQuery "+userJQuery.expando:"")+" env: "+$.expando);return that};fluid.initDomBinder=function(that,selectors){if(!that.container){fluid.fail("fluid.initDomBinder called for component with typeName "+that.typeName+' without an initialised container - this has probably resulted from placing "fluid.viewComponent" in incorrect position in grade merging order. '+" Make sure to place it to the right of any non-view grades in the gradeNames list to ensure that it overrides properly: resolved gradeNames is ",that.options.gradeNames," for component ",that)}that.dom=fluid.createDomBinder(that.container,selectors||that.options.selectors||{});that.locate=that.dom.locate;return that.dom};fluid.findAncestor=function(element,test){element=fluid.unwrap(element);while(element){if(test(element)){return element}element=element.parentNode}};fluid.findForm=function(node){return fluid.findAncestor(node,(function(element){return element.nodeName.toLowerCase()==="form"}))};fluid.each(["text","html"],(function(method){fluid[method]=function(node,newValue){node=$(node);return newValue===undefined?node[method]():node[method](newValue)}}));fluid.value=function(nodeIn,newValue){var node=fluid.unwrap(nodeIn);var multiple=false;if(node.nodeType===undefined&&node.length>1){node=node[0];multiple=true}if("input"!==node.nodeName.toLowerCase()||!/radio|checkbox/.test(node.type)){return newValue===undefined?$(node).val():$(node).val(newValue)}var name=node.name;if(name===undefined){fluid.fail("Cannot acquire value from node "+fluid.dumpEl(node)+" which does not have name attribute set")}var elements;if(multiple){elements=nodeIn}else{elements=node.ownerDocument.getElementsByName(name);var scope=fluid.findForm(node);elements=$.grep(elements,(function(element){if(element.name!==name){return false}return!scope||fluid.dom.isContainer(scope,element)}))}if(newValue!==undefined){if(typeof newValue==="boolean"){newValue=newValue?"true":"false"}$.each(elements,(function(){this.checked=newValue instanceof Array?newValue.indexOf(this.value)!==-1:newValue===this.value}))}else{var checked=$.map(elements,(function(element){return element.checked?element.value:null}));return node.type==="radio"?checked[0]:checked}};fluid.BINDING_ROOT_KEY="fluid-binding-root";fluid.findData=function(elem,name){while(elem){var data=$.data(elem,name);if(data){return data}elem=elem.parentNode}};fluid.bindFossils=function(node,data,fossils){$.data(node,fluid.BINDING_ROOT_KEY,{data:data,fossils:fossils})};fluid.boundPathForNode=function(node,fossils){node=fluid.unwrap(node);var key=node.name||node.id;var record=fossils[key];return record?record.EL:null};fluid.applyBoundChange=function(node,newValue,applier){node=fluid.unwrap(node);if(newValue===undefined){newValue=fluid.value(node)}if(node.nodeType===undefined&&node.length>0){node=node[0]}var root=fluid.findData(node,fluid.BINDING_ROOT_KEY);if(!root){fluid.fail("Bound data could not be discovered in any node above "+fluid.dumpEl(node))}var name=node.name;var fossil=root.fossils[name];if(!fossil){fluid.fail("No fossil discovered for name "+name+" in fossil record above "+fluid.dumpEl(node))}if(typeof fossil.oldvalue==="boolean"){newValue=newValue[0]?true:false}var EL=root.fossils[name].EL;if(applier){applier.fireChangeRequest({path:EL,value:newValue,source:"DOM:"+node.id})}else{fluid.set(root.data,EL,newValue)}};fluid.jById=function(id,dokkument){dokkument=dokkument&&dokkument.nodeType===9?dokkument:document;var element=fluid.byId(id,dokkument);var togo=element?$(element):[];togo.selector="#"+id;togo.context=dokkument;return togo};fluid.byId=function(id,dokkument){dokkument=dokkument&&dokkument.nodeType===9?dokkument:document;var el=dokkument.getElementById(id);if(el){if(el.id!==id){fluid.fail("Problem in document structure - picked up element "+fluid.dumpEl(el)+" for id "+id+" without this id - most likely the element has a name which conflicts with this id")}return el}else{return null}};fluid.getId=function(element){return fluid.unwrap(element).id};fluid.allocateSimpleId=function(element){element=fluid.unwrap(element);if(!element||fluid.isPrimitive(element)){return null}if(!element.id){var simpleId="fluid-id-"+fluid.allocateGuid();element.id=simpleId}return element.id};fluid.getDocument=function(element){var node=fluid.unwrap(element);return node.nodeType===9?node:node.ownerDocument};fluid.defaults("fluid.ariaLabeller",{gradeNames:["fluid.viewComponent"],labelAttribute:"aria-label",liveRegionMarkup:'<div class="liveRegion fl-hidden-accessible" aria-live="polite"></div>',liveRegionId:"fluid-ariaLabeller-liveRegion",invokers:{generateLiveElement:{funcName:"fluid.ariaLabeller.generateLiveElement",args:"{that}"},update:{funcName:"fluid.ariaLabeller.update",args:["{that}","{arguments}.0"]}},listeners:{onCreate:{func:"{that}.update",args:[null]}}});fluid.ariaLabeller.update=function(that,newOptions){newOptions=newOptions||that.options;that.container.attr(that.options.labelAttribute,newOptions.text);if(newOptions.dynamicLabel){var live=fluid.jById(that.options.liveRegionId);if(live.length===0){live=that.generateLiveElement()}live.text(newOptions.text)}};fluid.ariaLabeller.generateLiveElement=function(that){var liveEl=$(that.options.liveRegionMarkup);liveEl.prop("id",that.options.liveRegionId);$("body").append(liveEl);return liveEl};var LABEL_KEY="aria-labelling";fluid.getAriaLabeller=function(element){element=$(element);var that=fluid.getScopedData(element,LABEL_KEY);return that};fluid.updateAriaLabel=function(element,text,options){options=$.extend({},options||{},{text:text});var that=fluid.getAriaLabeller(element);if(!that){that=fluid.ariaLabeller(element,options);fluid.setScopedData(element,LABEL_KEY,that)}else{that.update(options)}return that};var dismissList={};$(document).on("click",(function(event){var target=fluid.resolveEventTarget(event);while(target){if(dismissList[target.id]){return}target=target.parentNode}fluid.each(dismissList,(function(dismissFunc,key){dismissFunc(event);delete dismissList[key]}))}));fluid.globalDismissal=function(nodes,dismissFunc){fluid.each(nodes,(function(node){var id=fluid.unwrap(node).ownerDocument===document?fluid.allocateSimpleId(node):fluid.allocateGuid();if(dismissFunc){dismissList[id]=dismissFunc}else{delete dismissList[id]}}))};fluid.now=function(){return Date.now?Date.now():(new Date).getTime()};fluid.deadMansBlur=function(control,options){var that={options:$.extend(true,{},fluid.defaults("fluid.deadMansBlur"),options)};that.blurPending=false;that.lastCancel=0;that.canceller=function(event){fluid.log("Cancellation through "+event.type+" on "+fluid.dumpEl(event.target));that.lastCancel=fluid.now();that.blurPending=false};that.noteProceeded=function(){fluid.globalDismissal(that.options.exclusions)};that.reArm=function(){fluid.globalDismissal(that.options.exclusions,that.proceed)};that.addExclusion=function(exclusions){fluid.globalDismissal(exclusions,that.proceed)};that.proceed=function(event){fluid.log("Direct proceed through "+event.type+" on "+fluid.dumpEl(event.target));that.blurPending=false;that.options.handler(control)};fluid.each(that.options.exclusions,(function(exclusion){exclusion=$(exclusion);fluid.each(exclusion,(function(excludeEl){$(excludeEl).on("focusin",that.canceller).on("fluid-focus",that.canceller).on("click",that.canceller).on("mousedown",that.canceller)}))}));if(!that.options.cancelByDefault){$(control).on("focusout",(function(event){fluid.log("Starting blur timer for element "+fluid.dumpEl(event.target));var now=fluid.now();fluid.log("back delay: "+(now-that.lastCancel));if(now-that.lastCancel>that.options.backDelay){that.blurPending=true}setTimeout((function(){if(that.blurPending){that.options.handler(control)}}),that.options.delay)}))}else{that.reArm()}return that};fluid.defaults("fluid.deadMansBlur",{gradeNames:"fluid.function",delay:150,backDelay:100})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.explodeLocalisedName=function(fileName,locale,defaultLocale){var lastDot=fileName.lastIndexOf(".");if(lastDot===-1||lastDot===0){lastDot=fileName.length}var baseName=fileName.substring(0,lastDot);var extension=fileName.substring(lastDot);var segs=locale.split("_");var exploded=fluid.transform(segs,(function(seg,index){var shortSegs=segs.slice(0,index+1);return baseName+"_"+shortSegs.join("_")+extension}));if(defaultLocale){exploded.unshift(baseName+"_"+defaultLocale+extension)}return exploded};var resourceCache={};var pendingClass={};fluid.fetchResources=function(resourceSpecs,callback,options){var that={options:fluid.copy(options||{})};that.resourceSpecs=resourceSpecs;that.callback=callback;that.operate=function(){fluid.fetchResources.fetchResourcesImpl(that)};fluid.each(resourceSpecs,(function(resourceSpec,key){resourceSpec.recurseFirer=fluid.makeEventFirer({name:'I/O completion for resource "'+key+'"'});resourceSpec.recurseFirer.addListener(that.operate);if(resourceSpec.url&&!resourceSpec.href){resourceSpec.href=resourceSpec.url}if(that.options.defaultLocale){resourceSpec.defaultLocale=that.options.defaultLocale}if(!resourceSpec.locale){resourceSpec.locale=resourceSpec.defaultLocale}}));if(that.options.amalgamateClasses){fluid.fetchResources.amalgamateClasses(resourceSpecs,that.options.amalgamateClasses,that.operate)}fluid.fetchResources.explodeForLocales(resourceSpecs);that.operate();return that};fluid.fetchResources.explodeForLocales=function(resourceSpecs){fluid.each(resourceSpecs,(function(resourceSpec,key){if(resourceSpec.locale){var exploded=fluid.explodeLocalisedName(resourceSpec.href,resourceSpec.locale,resourceSpec.defaultLocale);for(var i=0;i<exploded.length;++i){var newKey=key+"$localised-"+i;var newRecord=$.extend(true,{},resourceSpec,{href:exploded[i],localeExploded:true});resourceSpecs[newKey]=newRecord}resourceSpec.localeExploded=exploded.length}}));return resourceSpecs};fluid.fetchResources.condenseOneResource=function(resourceSpecs,resourceSpec,key,localeCount){var localeSpecs=[resourceSpec];for(var i=0;i<localeCount;++i){var localKey=key+"$localised-"+i;localeSpecs.unshift(resourceSpecs[localKey]);delete resourceSpecs[localKey]}var lastNonError=fluid.find_if(localeSpecs,(function(spec){return!spec.fetchError}));if(lastNonError){resourceSpecs[key]=lastNonError}};fluid.fetchResources.condenseForLocales=function(resourceSpecs){fluid.each(resourceSpecs,(function(resourceSpec,key){if(typeof resourceSpec.localeExploded==="number"){fluid.fetchResources.condenseOneResource(resourceSpecs,resourceSpec,key,resourceSpec.localeExploded)}}))};fluid.fetchResources.notifyResources=function(that,resourceSpecs,callback){fluid.fetchResources.condenseForLocales(resourceSpecs);callback(resourceSpecs)};fluid.fetchResources.amalgamateClasses=function(specs,classes,operator){fluid.each(classes,(function(clazz){var pending=pendingClass[clazz];fluid.each(pending,(function(pendingrec,canon){specs[clazz+"!"+canon]=pendingrec;pendingrec.recurseFirer.addListener(operator)}))}))};fluid.fetchResources.timeSuccessCallback=function(resourceSpec){if(resourceSpec.timeSuccess&&resourceSpec.options&&resourceSpec.options.success){var success=resourceSpec.options.success;resourceSpec.options.success=function(){var startTime=new Date;var ret=success.apply(null,arguments);fluid.log("External callback for URL "+resourceSpec.href+" completed - callback time: "+((new Date).getTime()-startTime.getTime())+"ms");return ret}}};function canonUrl(url){return url}fluid.fetchResources.clearResourceCache=function(url){if(url){delete resourceCache[canonUrl(url)]}else{fluid.clear(resourceCache)}};fluid.fetchResources.handleCachedRequest=function(resourceSpec,response,fetchError){var canon=canonUrl(resourceSpec.href);var cached=resourceCache[canon];if(cached.$$firer$$){fluid.log("Handling request for "+canon+" from cache");var fetchClass=resourceSpec.fetchClass;if(fetchClass&&pendingClass[fetchClass]){fluid.log("Clearing pendingClass entry for class "+fetchClass);delete pendingClass[fetchClass][canon]}var result={response:response,fetchError:fetchError};resourceCache[canon]=result;cached.fire(response,fetchError)}};fluid.fetchResources.completeRequest=function(thisSpec){thisSpec.queued=false;thisSpec.completeTime=new Date;fluid.log("Request to URL "+thisSpec.href+" completed - total elapsed time: "+(thisSpec.completeTime.getTime()-thisSpec.initTime.getTime())+"ms");thisSpec.recurseFirer.fire()};fluid.fetchResources.makeResourceCallback=function(thisSpec){return{success:function(response){thisSpec.resourceText=response;thisSpec.resourceKey=thisSpec.href;if(thisSpec.forceCache){fluid.fetchResources.handleCachedRequest(thisSpec,response)}fluid.fetchResources.completeRequest(thisSpec)},error:function(response,textStatus,errorThrown){thisSpec.fetchError={status:response.status,textStatus:response.textStatus,errorThrown:errorThrown};if(thisSpec.forceCache){fluid.fetchResources.handleCachedRequest(thisSpec,null,thisSpec.fetchError)}fluid.fetchResources.completeRequest(thisSpec)}}};fluid.fetchResources.issueCachedRequest=function(resourceSpec,options){var canon=canonUrl(resourceSpec.href);var cached=resourceCache[canon];if(!cached){fluid.log("First request for cached resource with url "+canon);cached=fluid.makeEventFirer({name:"cache notifier for resource URL "+canon});cached.$$firer$$=true;resourceCache[canon]=cached;var fetchClass=resourceSpec.fetchClass;if(fetchClass){if(!pendingClass[fetchClass]){pendingClass[fetchClass]={}}pendingClass[fetchClass][canon]=resourceSpec}options.cache=false;$.ajax(options)}else{if(!cached.$$firer$$){if(cached.response){options.success(cached.response)}else{options.error(cached.fetchError)}}else{fluid.log("Request for cached resource which is in flight: url "+canon);cached.addListener((function(response,fetchError){if(response){options.success(response)}else{options.error(fetchError)}}))}}};fluid.fetchResources.composeCallbacks=function(internal,external){return external?internal?function(){try{external.apply(null,arguments)}catch(e){fluid.log("Exception applying external fetchResources callback: "+e)}internal.apply(null,arguments)}:external:internal};fluid.fetchResources.composePolicy=function(target,source){return fluid.fetchResources.composeCallbacks(target,source)};fluid.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:fluid.fetchResources.composePolicy,error:fluid.fetchResources.composePolicy,url:"reverse"}});fluid.fetchResources.issueRequest=function(resourceSpec,key){var thisCallback=fluid.fetchResources.makeResourceCallback(resourceSpec);var options={url:resourceSpec.href,success:thisCallback.success,error:thisCallback.error,dataType:resourceSpec.dataType||"text"};fluid.fetchResources.timeSuccessCallback(resourceSpec);options=fluid.merge(fluid.defaults("fluid.fetchResources.issueRequest").mergePolicy,options,resourceSpec.options);resourceSpec.queued=true;resourceSpec.initTime=new Date;fluid.log("Request with key "+key+" queued for "+resourceSpec.href);if(resourceSpec.forceCache){fluid.fetchResources.issueCachedRequest(resourceSpec,options)}else{$.ajax(options)}};fluid.fetchResources.fetchResourcesImpl=function(that){var complete=true;var resourceSpecs=that.resourceSpecs;for(var key in resourceSpecs){var resourceSpec=resourceSpecs[key];if(resourceSpec.href&&!resourceSpec.completeTime){if(!resourceSpec.queued){fluid.fetchResources.issueRequest(resourceSpec,key)}if(resourceSpec.queued){complete=false}}else if(resourceSpec.nodeId&&!resourceSpec.resourceText){var node=document.getElementById(resourceSpec.nodeId);resourceSpec.resourceText=fluid.dom.getElementText(node);resourceSpec.resourceKey=resourceSpec.nodeId}}if(complete&&that.callback&&!that.callbackCalled){that.callbackCalled=true;setTimeout((function(){fluid.fetchResources.notifyResources(that,resourceSpecs,that.callback)}),1)}};fluid.fetchResources.primeCacheFromResources=function(componentName){var resources=fluid.defaults(componentName).resources;var expanded=(fluid.expandOptions?fluid.expandOptions:fluid.identity)(fluid.copy(resources));fluid.fetchResources(expanded)};fluid.registerNamespace("fluid.expander");fluid.expander.makeDefaultFetchOptions=function(successdisposer,failid,options){return $.extend(true,{dataType:"text"},options,{success:function(response,environmentdisposer){var json=JSON.parse(response);environmentdisposer(successdisposer(json))},error:function(response,textStatus){fluid.log("Error fetching "+failid+": "+textStatus)}})};fluid.expander.makeFetchExpander=function(options){return{expander:{type:"fluid.expander.deferredFetcher",href:options.url,options:fluid.expander.makeDefaultFetchOptions(options.disposer,options.url,options.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:options.fetchKey}}};fluid.expander.deferredFetcher=function(deliverer,source,expandOptions){var expander=source.expander;var spec=fluid.copy(expander);var collector=fluid.expand(expander.resourceSpecCollector,expandOptions);delete spec.type;delete spec.resourceSpecCollector;delete spec.fetchKey;var environmentdisposer=function(disposed){deliverer(disposed)};spec.options.success=function(response){expander.options.success(response,environmentdisposer)};var key=expander.fetchKey||fluid.allocateGuid();collector[key]=spec;return fluid.NO_VALUE}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.messageResolver",{gradeNames:["fluid.component"],mergePolicy:{messageBase:"nomerge",parents:"nomerge"},resolveFunc:fluid.stringTemplate,parseFunc:fluid.identity,messageBase:{},members:{messageBase:"@expand:{that}.options.parseFunc({that}.options.messageBase)"},invokers:{lookup:"fluid.messageResolver.lookup({that}, {arguments}.0)",resolve:"fluid.messageResolver.resolve({that}, {arguments}.0, {arguments}.1)"},parents:[]});fluid.messageResolver.lookup=function(that,messagecodes){var resolved=fluid.messageResolver.resolveOne(that.messageBase,messagecodes);if(resolved===undefined){return fluid.find(that.options.parents,(function(parent){return parent?parent.lookup(messagecodes):undefined}))}else{return{template:resolved,resolveFunc:that.options.resolveFunc}}};fluid.messageResolver.resolve=function(that,messagecodes,args){if(!messagecodes){return"[No messagecodes provided]"}messagecodes=fluid.makeArray(messagecodes);var looked=that.lookup(messagecodes);return looked?looked.resolveFunc(looked.template,args):"[Message string for key "+messagecodes[0]+" not found]"};fluid.messageResolver.resolveOne=function(messageBase,messagecodes){for(var i=0;i<messagecodes.length;++i){var code=messagecodes[i];var message=messageBase[code];if(message!==undefined){return message}}};fluid.messageLocator=function(messageBase,resolveFunc){var resolver=fluid.messageResolver({messageBase:messageBase,resolveFunc:resolveFunc});return function(messagecodes,args){return resolver.resolve(messagecodes,args)}};fluid.resolveMessageSource=function(messageSource){if(messageSource.type==="data"){if(messageSource.url===undefined){return fluid.messageLocator(messageSource.messages,messageSource.resolveFunc)}else{}}else if(messageSource.type==="resolver"){return messageSource.resolver.resolve}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.resourceLoader",{gradeNames:["fluid.component"],listeners:{"onCreate.loadResources":{listener:"fluid.resourceLoader.loadResources",args:["{that}",{expander:{func:"{that}.resolveResources"}}]}},defaultLocale:null,locale:null,terms:{},resources:{},resourceOptions:{},invokers:{transformURL:{funcName:"fluid.stringTemplate",args:["{arguments}.0","{that}.options.terms"]},resolveResources:{funcName:"fluid.resourceLoader.resolveResources",args:"{that}"}},events:{onResourcesLoaded:null}});fluid.resourceLoader.resolveResources=function(that){var mapped=fluid.transform(that.options.resources,that.transformURL);return fluid.transform(mapped,(function(url){var resourceSpec={url:url,forceCache:true,options:that.options.resourceOptions};return $.extend(resourceSpec,fluid.filterKeys(that.options,["defaultLocale","locale"]))}))};fluid.resourceLoader.loadResources=function(that,resources){fluid.fetchResources(resources,(function(){that.resources=resources;that.events.onResourcesLoaded.fire(resources)}))}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.newViewComponent",{gradeNames:["fluid.modelComponent"],members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors, {that}.container)",container:"@expand:fluid.container({that}.options.container)"}});fluid.newViewComponent.addToParent=function(parentContainer,elm,method){method=method||"append";$(parentContainer)[method](elm)};fluid.defaults("fluid.containerRenderingView",{gradeNames:["fluid.newViewComponent"],container:"@expand:{that}.renderContainer()",parentContainer:"fluid.notImplemented",injectionType:"append",invokers:{renderMarkup:"fluid.identity({that}.options.markup.container)",renderContainer:"fluid.containerRenderingView.renderContainer({that}, {that}.renderMarkup, {that}.addToParent)",addToParent:{funcName:"fluid.newViewComponent.addToParent",args:["{that}.options.parentContainer","{arguments}.0","{that}.options.injectionType"]}}});fluid.containerRenderingView.renderContainer=function(that,renderMarkup,addToParent){fluid.log("Rendering container for "+that.id);var containerMarkup=renderMarkup();var container=$(containerMarkup);addToParent(container);return container};fluid.defaults("fluid.templateRenderingView",{gradeNames:["fluid.newViewComponent","fluid.resourceLoader"],resources:{template:"fluid.notImplemented"},injectionType:"append",events:{afterRender:null},listeners:{"onResourcesLoaded.render":"{that}.render","onResourcesLoaded.afterRender":{listener:"{that}.events.afterRender",args:["{that}"],priority:"after:render"}},invokers:{render:{funcName:"fluid.newViewComponent.addToParent",args:["{that}.container","{that}.resources.template.resourceText","{that}.options.injectionType"]}},distributeOptions:{mapTemplateSource:{source:"{that}.options.template",removeSource:true,target:"{that}.options.resources.template"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.mutationObserver",{gradeNames:["fluid.viewComponent"],events:{onNodeAdded:null,onNodeRemoved:null,onAttributeChanged:null},listeners:{"onDestroy.disconnect":"{that}.disconnect"},members:{observer:{expander:{func:"{that}.createObserver"}}},defaultObserveConfig:{attributes:true,childList:true,subtree:true},invokers:{observe:{funcName:"fluid.mutationObserver.observe",args:["{that}","{arguments}.0","{arguments}.1"]},disconnect:{this:"{that}.observer",method:"disconnect"},takeRecords:{this:"{that}.observer",method:"takeRecords"},createObserver:{funcName:"fluid.mutationObserver.createObserver",args:["{that}"]}}});fluid.mutationObserver.createObserver=function(that){var observer=new MutationObserver((function(mutationRecords){fluid.each(mutationRecords,(function(mutationRecord){for(var i=0;i<mutationRecord.addedNodes.length;i++){that.events.onNodeAdded.fire(mutationRecord.addedNodes[i],mutationRecord)}for(var j=0;j<mutationRecord.removedNodes.length;j++){that.events.onNodeRemoved.fire(mutationRecord.removedNodes[j],mutationRecord)}if(mutationRecord.type==="attributes"){that.events.onAttributeChanged.fire(mutationRecord.target,mutationRecord)}}))}));return observer};fluid.mutationObserver.observe=function(that,target,options){target=fluid.unwrap(target||that.container);that.observer.observe(target,options||that.options.defaultObserveConfig)}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.textNodeParser",{gradeNames:["fluid.component"],events:{onParsedTextNode:null,afterParse:null},invokers:{parse:{funcName:"fluid.textNodeParser.parse",args:["{that}","{arguments}.0","{arguments}.1","{that}.events.afterParse.fire"]},hasTextToRead:"fluid.textNodeParser.hasTextToRead",getLang:"fluid.textNodeParser.getLang"}});fluid.textNodeParser.hasGlyph=function(str){return fluid.isValue(str)&&/\S/.test(str)};fluid.textNodeParser.hasTextToRead=function(elm,acceptAriaHidden){elm=fluid.unwrap(elm);return elm&&(elm.tagName.toLowerCase()==="body"||elm.offsetParent)&&fluid.textNodeParser.hasGlyph(elm.innerText)&&(acceptAriaHidden||!$(elm).closest('[aria-hidden="true"]').length)};fluid.textNodeParser.getLang=function(elm){return $(elm).closest("[lang]").attr("lang")};fluid.textNodeParser.parse=function(that,elm,lang,afterParseEvent){elm=fluid.unwrap(elm);var parsed=[];if(that.hasTextToRead(elm)){var childNodes=elm.childNodes;var elementLang=elm.getAttribute("lang")||lang||that.getLang(elm);Array.prototype.forEach.call(childNodes,(function(childNode,childIndex){if(childNode.nodeType===Node.TEXT_NODE){var textNodeData={node:childNode,lang:elementLang,childIndex:childIndex};parsed.push(textNodeData);that.events.onParsedTextNode.fire(textNodeData)}else if(childNode.nodeType===Node.ELEMENT_NODE){parsed=parsed.concat(fluid.textNodeParser.parse(that,childNode,elementLang))}}))}if(afterParseEvent){afterParseEvent(that,parsed)}return parsed}})(jQuery,fluid_3_0_0);(function(){var module={exports:null};function Hypher(language){var exceptions=[],i=0;this.trie=this.createTrie(language["patterns"]);this.leftMin=language["leftmin"];this.rightMin=language["rightmin"];this.exceptions={};if(language["exceptions"]){exceptions=language["exceptions"].split(/,\s?/g);for(;i<exceptions.length;i+=1){this.exceptions[exceptions[i].replace(/\u2027/g,"").toLowerCase()]=new RegExp("("+exceptions[i].split("‧").join(")(")+")","i")}}}Hypher.TrieNode;Hypher.prototype.createTrie=function(patternObject){var size=0,i=0,c=0,p=0,chars=null,points=null,codePoint=null,t=null,tree={_points:[]},patterns;for(size in patternObject){if(patternObject.hasOwnProperty(size)){patterns=patternObject[size].match(new RegExp(".{1,"+ +size+"}","g"));for(i=0;i<patterns.length;i+=1){chars=patterns[i].replace(/[0-9]/g,"").split("");points=patterns[i].split(/\D/);t=tree;for(c=0;c<chars.length;c+=1){codePoint=chars[c].charCodeAt(0);if(!t[codePoint]){t[codePoint]={}}t=t[codePoint]}t._points=[];for(p=0;p<points.length;p+=1){t._points[p]=points[p]||0}}}}return tree};Hypher.prototype.hyphenateText=function(str,minLength){minLength=minLength||4;var words=str.split(/([a-zA-Z0-9_\u0027\u00DF-\u00EA\u00EC-\u00EF\u00F1-\u00F6\u00F8-\u00FD\u0101\u0103\u0105\u0107\u0109\u010D\u010F\u0111\u0113\u0117\u0119\u011B\u011D\u011F\u0123\u0125\u012B\u012F\u0131\u0135\u0137\u013C\u013E\u0142\u0144\u0146\u0148\u0151\u0153\u0155\u0159\u015B\u015D\u015F\u0161\u0165\u016B\u016D\u016F\u0171\u0173\u017A\u017C\u017E\u017F\u0219\u021B\u02BC\u0390\u03AC-\u03CE\u03F2\u0401\u0410-\u044F\u0451\u0454\u0456\u0457\u045E\u0491\u0531-\u0556\u0561-\u0587\u0902\u0903\u0905-\u090B\u090E-\u0910\u0912\u0914-\u0928\u092A-\u0939\u093E-\u0943\u0946-\u0948\u094A-\u094D\u0982\u0983\u0985-\u098B\u098F\u0990\u0994-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BE-\u09C3\u09C7\u09C8\u09CB-\u09CD\u09D7\u0A02\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A14-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A82\u0A83\u0A85-\u0A8B\u0A8F\u0A90\u0A94-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABE-\u0AC3\u0AC7\u0AC8\u0ACB-\u0ACD\u0B02\u0B03\u0B05-\u0B0B\u0B0F\u0B10\u0B14-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3E-\u0B43\u0B47\u0B48\u0B4B-\u0B4D\u0B57\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C02\u0C03\u0C05-\u0C0B\u0C0E-\u0C10\u0C12\u0C14-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C43\u0C46-\u0C48\u0C4A-\u0C4D\u0C82\u0C83\u0C85-\u0C8B\u0C8E-\u0C90\u0C92\u0C94-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC3\u0CC6-\u0CC8\u0CCA-\u0CCD\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60\u0D61\u0D7A-\u0D7F\u1F00-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB2-\u1FB4\u1FB6\u1FB7\u1FBD\u1FBF\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u200D\u2019]+)/g);for(var i=0;i<words.length;i+=1){if(words[i].indexOf("/")!==-1){if(i!==0&&i!==words.length-1&&!/\s+\/|\/\s+/.test(words[i])){words[i]+=""}}else if(words[i].length>minLength){words[i]=this.hyphenate(words[i]).join("")}}return words.join("")};Hypher.prototype.hyphenate=function(word){var characters,characterPoints=[],originalCharacters,i,j,k,node,points=[],wordLength,lowerCaseWord=word.toLowerCase(),nodePoints,nodePointsLength,m=Math.max,trie=this.trie,result=[""];if(this.exceptions.hasOwnProperty(lowerCaseWord)){return word.match(this.exceptions[lowerCaseWord]).slice(1)}if(word.indexOf("")!==-1){return[word]}word="_"+word+"_";characters=word.toLowerCase().split("");originalCharacters=word.split("");wordLength=characters.length;for(i=0;i<wordLength;i+=1){points[i]=0;characterPoints[i]=characters[i].charCodeAt(0)}for(i=0;i<wordLength;i+=1){node=trie;for(j=i;j<wordLength;j+=1){node=node[characterPoints[j]];if(node){nodePoints=node._points;if(nodePoints){for(k=0,nodePointsLength=nodePoints.length;k<nodePointsLength;k+=1){points[i+k]=m(points[i+k],nodePoints[k])}}}else{break}}}for(i=1;i<wordLength-1;i+=1){if(i>this.leftMin&&i<wordLength-this.rightMin&&points[i]%2){result.push(originalCharacters[i])}else{result[result.length-1]+=originalCharacters[i]}}return result};module.exports=Hypher;window["Hypher"]=module.exports;window["Hypher"]["languages"]={}})();(function($){$.fn.hyphenate=function(language){if(window["Hypher"]["languages"][language]){return this.each((function(){var i=0,len=this.childNodes.length;for(;i<len;i+=1){if(this.childNodes[i].nodeType===3){this.childNodes[i].nodeValue=window["Hypher"]["languages"][language].hyphenateText(this.childNodes[i].nodeValue)}}}))}}})(jQuery);(function($,fluid){"use strict";fluid.registerNamespace("fluid.contextAware");fluid.defaults("fluid.contextAware.marker",{gradeNames:["fluid.component"]});fluid.contextAware.makeCheckMarkers=function(checks,path,instantiator){fluid.each(checks,(function(value,markerTypeName){fluid.constructSingle(path,{type:markerTypeName,gradeNames:"fluid.contextAware.marker",value:value},instantiator)}))};fluid.contextAware.performChecks=function(checkHash){return fluid.transform(checkHash,(function(checkRecord){if(typeof checkRecord==="function"){checkRecord={func:checkRecord}}else if(typeof checkRecord==="string"){checkRecord={funcName:checkRecord}}if(fluid.isPrimitive(checkRecord)){return checkRecord}else if("value"in checkRecord){return checkRecord.value}else if("func"in checkRecord){return checkRecord.func()}else if("funcName"in checkRecord){return fluid.invokeGlobalFunction(checkRecord.funcName)}else{fluid.fail("Error in contextAwareness check record ",checkRecord," - must contain an entry with name value, func, or funcName")}}))};fluid.contextAware.makeChecks=function(checkHash,path,instantiator){var checkOptions=fluid.contextAware.performChecks(checkHash);fluid.contextAware.makeCheckMarkers(checkOptions,path,instantiator)};fluid.contextAware.forgetChecks=function(markerNames,path,instantiator){instantiator=instantiator||fluid.globalInstantiator;path=path||[];var markerArray=fluid.makeArray(markerNames);fluid.each(markerArray,(function(markerName){var memberName=fluid.typeNameToMemberName(markerName);var segs=fluid.model.parseToSegments(path,instantiator.parseEL,true);segs.push(memberName);fluid.destroy(segs,instantiator)}))};fluid.defaults("fluid.contextAware",{gradeNames:["{that}.check"],mergePolicy:{contextAwareness:"noexpand"},contextAwareness:{},invokers:{check:{funcName:"fluid.contextAware.check",args:["{that}","{that}.options.contextAwareness"]}}});fluid.contextAware.getCheckValue=function(that,reference){var targetRef=fluid.parseContextReference(reference);var targetComponent=fluid.resolveContext(targetRef.context,that);var path=targetRef.path||["options","value"];var value=fluid.getForComponent(targetComponent,path);return value};fluid.contextAware.checkOne=function(that,contextAwareRecord){if(contextAwareRecord.checks&&contextAwareRecord.checks.contextValue){fluid.fail("Nesting error in contextAwareness record ",contextAwareRecord,' - the "checks" entry must contain a hash and not a contextValue/gradeNames record at top level')}var checkList=fluid.parsePriorityRecords(contextAwareRecord.checks,"contextAwareness checkRecord");return fluid.find(checkList,(function(check){if(!check.contextValue){fluid.fail("Cannot perform check for contextAwareness record ",check,' without a valid field named "contextValue"')}var value=fluid.contextAware.getCheckValue(that,check.contextValue);if(check.equals===undefined?value:value===check.equals){return check.gradeNames}}),contextAwareRecord.defaultGradeNames)};fluid.contextAware.check=function(that,contextAwarenessOptions){var gradeNames=[];var contextAwareList=fluid.parsePriorityRecords(contextAwarenessOptions,"contextAwareness adaptationRecord");fluid.each(contextAwareList,(function(record){var matched=fluid.contextAware.checkOne(that,record);gradeNames=gradeNames.concat(fluid.makeArray(matched))}));return gradeNames};fluid.contextAware.makeAdaptation=function(options){fluid.expect("fluid.contextAware.makeAdaptation",options,["distributionName","targetName","adaptationName","checkName","record"]);fluid.defaults(options.distributionName,{gradeNames:["fluid.component"],distributeOptions:{target:"{/ "+options.targetName+"}.options.contextAwareness."+options.adaptationName+".checks."+options.checkName,record:options.record}});fluid.constructSingle([],options.distributionName)};fluid.contextAware.isBrowser=function(){return typeof window!=="undefined"&&!!window.document};fluid.contextAware.makeChecks({"fluid.browser":{funcName:"fluid.contextAware.isBrowser"}});fluid.registerNamespace("fluid.contextAware.browser");fluid.contextAware.browser.getPlatformName=function(){return typeof navigator!=="undefined"&&navigator.platform?navigator.platform:undefined};fluid.contextAware.browser.getUserAgent=function(){return typeof navigator!=="undefined"&&navigator.userAgent?navigator.userAgent:undefined};fluid.contextAware.makeChecks({"fluid.browser.platformName":{funcName:"fluid.contextAware.browser.getPlatformName"},"fluid.browser.userAgent":{funcName:"fluid.contextAware.browser.getUserAgent"}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.enhance");if(fluid.contextAware.isBrowser()&&$.fn){$("head").append("<style type='text/css'>.fl-progEnhance-basic, .fl-ProgEnhance-basic { display: none; } .fl-progEnhance-enhanced, .fl-ProgEnhance-enhanced { display: block; }</style>")}})(jQuery,fluid_3_0_0);var fluid_3_0_0=fluid_3_0_0||{};(function(fluid){"use strict";fluid.XMLP=function(strXML){return fluid.XMLP.XMLPImpl(strXML)};fluid.XMLP.closedTags={abbr:true,br:true,col:true,img:true,input:true,link:true,meta:true,param:true,hr:true,area:true,embed:true};fluid.XMLP._NONE=0;fluid.XMLP._ELM_B=1;fluid.XMLP._ELM_E=2;fluid.XMLP._ELM_EMP=3;fluid.XMLP._ATT=4;fluid.XMLP._TEXT=5;fluid.XMLP._ENTITY=6;fluid.XMLP._PI=7;fluid.XMLP._CDATA=8;fluid.XMLP._COMMENT=9;fluid.XMLP._DTD=10;fluid.XMLP._ERROR=11;fluid.XMLP._CONT_XML=0;fluid.XMLP._CONT_ALT=1;fluid.XMLP._ATT_NAME=0;fluid.XMLP._ATT_VAL=1;fluid.XMLP._STATE_PROLOG=1;fluid.XMLP._STATE_DOCUMENT=2;fluid.XMLP._STATE_MISC=3;fluid.XMLP._errs=[];fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_PI=0]="PI: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_DTD=1]="DTD: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_COMMENT=2]="Comment: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_CDATA=3]="CDATA: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_ELM=4]="Element: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_CLOSE_ENTITY=5]="Entity: missing closing sequence";fluid.XMLP._errs[fluid.XMLP.ERR_PI_TARGET=6]="PI: target is required";fluid.XMLP._errs[fluid.XMLP.ERR_ELM_EMPTY=7]="Element: cannot be both empty and closing";fluid.XMLP._errs[fluid.XMLP.ERR_ELM_NAME=8]='Element: name must immediately follow "<"';fluid.XMLP._errs[fluid.XMLP.ERR_ELM_LT_NAME=9]='Element: "<" not allowed in element names';fluid.XMLP._errs[fluid.XMLP.ERR_ATT_VALUES=10]="Attribute: values are required and must be in quotes";fluid.XMLP._errs[fluid.XMLP.ERR_ATT_LT_NAME=11]='Element: "<" not allowed in attribute names';fluid.XMLP._errs[fluid.XMLP.ERR_ATT_LT_VALUE=12]='Attribute: "<" not allowed in attribute values';fluid.XMLP._errs[fluid.XMLP.ERR_ATT_DUP=13]="Attribute: duplicate attributes not allowed";fluid.XMLP._errs[fluid.XMLP.ERR_ENTITY_UNKNOWN=14]="Entity: unknown entity";fluid.XMLP._errs[fluid.XMLP.ERR_INFINITELOOP=15]="Infinite loop";fluid.XMLP._errs[fluid.XMLP.ERR_DOC_STRUCTURE=16]="Document: only comments, processing instructions, or whitespace allowed outside of document element";fluid.XMLP._errs[fluid.XMLP.ERR_ELM_NESTING=17]="Element: must be nested correctly";fluid.XMLP._checkStructure=function(that,iEvent){var stack=that.m_stack;if(fluid.XMLP._STATE_PROLOG==that.m_iState){that.m_iState=fluid.XMLP._STATE_DOCUMENT}if(fluid.XMLP._STATE_DOCUMENT===that.m_iState){if(fluid.XMLP._ELM_B==iEvent||fluid.XMLP._ELM_EMP==iEvent){that.m_stack[stack.length]=that.getName()}if(fluid.XMLP._ELM_E==iEvent||fluid.XMLP._ELM_EMP==iEvent){if(stack.length===0){return fluid.XMLP._NONE}var strTop=stack[stack.length-1];that.m_stack.length--;if(strTop===null||strTop!==that.getName()){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_NESTING)}}}return iEvent};fluid.XMLP._parseCDATA=function(that,iB){var iE=that.m_xml.indexOf("]]>",iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_CDATA)}fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB,iE);that.m_iP=iE+3;return fluid.XMLP._CDATA};fluid.XMLP._parseComment=function(that,iB){var iE=that.m_xml.indexOf("-"+"->",iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_COMMENT)}fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB-4,iE+3);that.m_iP=iE+3;return fluid.XMLP._COMMENT};fluid.XMLP._parseDTD=function(that,iB){var iE,strClose,iInt,iLast;iE=that.m_xml.indexOf(">",iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_DTD)}iInt=that.m_xml.indexOf("[",iB);strClose=iInt!=-1&&iInt<iE?"]>":">";while(true){if(iE==iLast){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_INFINITELOOP)}iLast=iE;iE=that.m_xml.indexOf(strClose,iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_DTD)}if(that.m_xml.substring(iE-1,iE+2)!="]]>"){break}}that.m_iP=iE+strClose.length;return fluid.XMLP._DTD};fluid.XMLP._parsePI=function(that,iB){var iE,iTB,iTE,iCB,iCE;iE=that.m_xml.indexOf("?>",iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_PI)}iTB=fluid.SAXStrings.indexOfNonWhitespace(that.m_xml,iB,iE);if(iTB==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_PI_TARGET)}iTE=fluid.SAXStrings.indexOfWhitespace(that.m_xml,iTB,iE);if(iTE==-1){iTE=iE}iCB=fluid.SAXStrings.indexOfNonWhitespace(that.m_xml,iTE,iE);if(iCB==-1){iCB=iE}iCE=fluid.SAXStrings.lastIndexOfNonWhitespace(that.m_xml,iCB,iE);if(iCE==-1){iCE=iE-1}that.m_name=that.m_xml.substring(iTB,iTE);fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iCB,iCE+1);that.m_iP=iE+2;return fluid.XMLP._PI};fluid.XMLP._parseText=function(that,iB){var iE=that.m_xml.indexOf("<",iB);if(iE==-1){iE=that.m_xml.length}fluid.XMLP._setContent(that,fluid.XMLP._CONT_XML,iB,iE);that.m_iP=iE;return fluid.XMLP._TEXT};fluid.XMLP._setContent=function(that,iSrc){var args=arguments;if(fluid.XMLP._CONT_XML==iSrc){that.m_cAlt=null;that.m_cB=args[2];that.m_cE=args[3]}else{that.m_cAlt=args[2];that.m_cB=0;that.m_cE=args[2].length}that.m_cSrc=iSrc};fluid.XMLP._setErr=function(that,iErr){var strErr=fluid.XMLP._errs[iErr];that.m_cAlt=strErr;that.m_cB=0;that.m_cE=strErr.length;that.m_cSrc=fluid.XMLP._CONT_ALT;return fluid.XMLP._ERROR};fluid.XMLP._parseElement=function(that,iB){var iE,iDE,iRet;var iType,strN,iLast;iDE=iE=that.m_xml.indexOf(">",iB);if(iE==-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_CLOSE_ELM)}if(that.m_xml.charAt(iB)=="/"){iType=fluid.XMLP._ELM_E;iB++}else{iType=fluid.XMLP._ELM_B}if(that.m_xml.charAt(iE-1)=="/"){if(iType==fluid.XMLP._ELM_E){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_EMPTY)}iType=fluid.XMLP._ELM_EMP;iDE--}that.nameRegex.lastIndex=iB;var nameMatch=that.nameRegex.exec(that.m_xml);if(!nameMatch){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_NAME)}strN=nameMatch[1].toLowerCase();if("li"===strN&&iType!==fluid.XMLP._ELM_E&&that.m_stack.length>0&&that.m_stack[that.m_stack.length-1]==="li"&&!that.m_emitSynthetic){that.m_name="li";that.m_emitSynthetic=true;return fluid.XMLP._ELM_E}that.m_attributes={};that.m_cAlt="";if(that.nameRegex.lastIndex<iDE){that.m_iP=that.nameRegex.lastIndex;while(that.m_iP<iDE){that.attrStartRegex.lastIndex=that.m_iP;var attrMatch=that.attrStartRegex.exec(that.m_xml);if(!attrMatch){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_VALUES)}var attrname=attrMatch[1].toLowerCase();var attrval;if(that.m_xml.charCodeAt(that.attrStartRegex.lastIndex)===61){var valRegex=that.m_xml.charCodeAt(that.attrStartRegex.lastIndex+1)===34?that.attrValRegex:that.attrValIERegex;valRegex.lastIndex=that.attrStartRegex.lastIndex+1;attrMatch=valRegex.exec(that.m_xml);if(!attrMatch){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_VALUES)}attrval=attrMatch[1]}else{attrval=attrname;valRegex=that.attrStartRegex}if(!that.m_attributes[attrname]||that.m_attributes[attrname]===attrval){that.m_attributes[attrname]=attrval}else{return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ATT_DUP)}that.m_iP=valRegex.lastIndex}}if(strN.indexOf("<")!=-1){return fluid.XMLP._setErr(that,fluid.XMLP.ERR_ELM_LT_NAME)}that.m_name=strN;that.m_iP=iE+1;if(fluid.XMLP.closedTags[strN]){that.closeRegex.lastIndex=iE+1;var closeMatch=that.closeRegex.exec;if(closeMatch){var matchclose=that.m_xml.indexOf(strN,closeMatch.lastIndex);if(matchclose===closeMatch.lastIndex){return iType}else{return fluid.XMLP._ELM_EMP}}}that.m_emitSynthetic=false;return iType};fluid.XMLP._parse=function(that){var iP=that.m_iP;var xml=that.m_xml;if(iP===xml.length){return fluid.XMLP._NONE}var c=xml.charAt(iP);if(c==="<"){var c2=xml.charAt(iP+1);if(c2==="?"){return fluid.XMLP._parsePI(that,iP+2)}else if(c2==="!"){if(iP===xml.indexOf("<!DOCTYPE",iP)){return fluid.XMLP._parseDTD(that,iP+9)}else if(iP===xml.indexOf("\x3c!--",iP)){return fluid.XMLP._parseComment(that,iP+4)}else if(iP===xml.indexOf("<![CDATA[",iP)){return fluid.XMLP._parseCDATA(that,iP+9)}}else{return fluid.XMLP._parseElement(that,iP+1)}}else{return fluid.XMLP._parseText(that,iP)}};fluid.XMLP.XMLPImpl=function(strXML){var that={};that.m_xml=strXML;that.m_iP=0;that.m_iState=fluid.XMLP._STATE_PROLOG;that.m_stack=[];that.m_attributes={};that.m_emitSynthetic=false;that.getColumnNumber=function(){return fluid.SAXStrings.getColumnNumber(that.m_xml,that.m_iP)};that.getContent=function(){return that.m_cSrc==fluid.XMLP._CONT_XML?that.m_xml:that.m_cAlt};that.getContentBegin=function(){return that.m_cB};that.getContentEnd=function(){return that.m_cE};that.getLineNumber=function(){return fluid.SAXStrings.getLineNumber(that.m_xml,that.m_iP)};that.getName=function(){return that.m_name};that.next=function(){return fluid.XMLP._checkStructure(that,fluid.XMLP._parse(that))};that.nameRegex=/([^\s\/>]+)/g;that.attrStartRegex=/\s*([\w:_][\w:_\-\.]*)/gm;that.attrValRegex=/\"([^\"]*)\"\s*/gm;that.attrValIERegex=/([^\>\s]+)\s*/gm;that.closeRegex=/\s*<\//g;return that};fluid.SAXStrings={};fluid.SAXStrings.WHITESPACE=" \t\n\r";fluid.SAXStrings.QUOTES="\"'";fluid.SAXStrings.getColumnNumber=function(strD,iP){if(!strD){return-1}iP=iP||strD.length;var arrD=strD.substring(0,iP).split("\n");arrD.length--;var iLinePos=arrD.join("\n").length;return iP-iLinePos};fluid.SAXStrings.getLineNumber=function(strD,iP){if(!strD){return-1}iP=iP||strD.length;return strD.substring(0,iP).split("\n").length};fluid.SAXStrings.indexOfNonWhitespace=function(strD,iB,iE){if(!strD)return-1;iB=iB||0;iE=iE||strD.length;for(var i=iB;i<iE;++i){var c=strD.charAt(i);if(c!==" "&&c!=="\t"&&c!=="\n"&&c!=="\r")return i}return-1};fluid.SAXStrings.indexOfWhitespace=function(strD,iB,iE){if(!strD){return-1}iB=iB||0;iE=iE||strD.length;for(var i=iB;i<iE;i++){if(fluid.SAXStrings.WHITESPACE.indexOf(strD.charAt(i))!=-1){return i}}return-1};fluid.SAXStrings.lastIndexOfNonWhitespace=function(strD,iB,iE){if(!strD){return-1}iB=iB||0;iE=iE||strD.length;for(var i=iE-1;i>=iB;i--){if(fluid.SAXStrings.WHITESPACE.indexOf(strD.charAt(i))==-1){return i}}return-1};fluid.SAXStrings.replace=function(strD,iB,iE,strF,strR){if(!strD){return""}iB=iB||0;iE=iE||strD.length;return strD.substring(iB,iE).split(strF).join(strR)}})(fluid_3_0_0);(function($,fluid){"use strict";fluid.parseTemplate=function(template,baseURL,scanStart,cutpoints_in,opts){opts=opts||{};if(!template){fluid.fail("empty template supplied to fluid.parseTemplate")}var t;var parser;var tagstack;var lumpindex=0;var nestingdepth=0;var justended=false;var defstart=-1;var defend=-1;var debugMode=false;var cutpoints=[];var simpleClassCutpoints={};var cutstatus=[];var XMLLump=function(lumpindex,nestingdepth){return{nestingdepth:nestingdepth,lumpindex:lumpindex,parent:t}};function isSimpleClassCutpoint(tree){return tree.length===1&&tree[0].predList.length===1&&tree[0].predList[0].clazz}function init(baseURLin,debugModeIn,cutpointsIn){t.rootlump=XMLLump(0,-1);tagstack=[t.rootlump];lumpindex=0;nestingdepth=0;justended=false;defstart=-1;defend=-1;baseURL=baseURLin;debugMode=debugModeIn;if(cutpointsIn){for(var i=0;i<cutpointsIn.length;++i){var tree=fluid.parseSelector(cutpointsIn[i].selector,fluid.simpleCSSMatcher);var clazz=isSimpleClassCutpoint(tree);if(clazz){simpleClassCutpoints[clazz]=cutpointsIn[i].id}else{cutstatus.push([]);cutpoints.push($.extend({},cutpointsIn[i],{tree:tree}))}}}}function findTopContainer(){for(var i=tagstack.length-1;i>=0;--i){var lump=tagstack[i];if(lump.rsfID!==undefined){return lump}}return t.rootlump}function newLump(){var togo=XMLLump(lumpindex,nestingdepth);if(debugMode){togo.line=parser.getLineNumber();togo.column=parser.getColumnNumber()}t.lumps[lumpindex]=togo;++lumpindex;return togo}function addLump(mmap,ID,lump){var list=mmap[ID];if(!list){list=[];mmap[ID]=list}list[list.length]=lump}function checkContribute(ID,lump){if(ID.indexOf("scr=contribute-")!==-1){var scr=ID.substring("scr=contribute-".length);addLump(t.collectmap,scr,lump)}}function debugLump(lump){return"<"+lump.tagname+">"}function hasCssClass(clazz,totest){if(!totest){return false}return(" "+totest+" ").indexOf(" "+clazz+" ")!==-1}function matchNode(term,headlump,headclazz){if(term.predList){for(var i=0;i<term.predList.length;++i){var pred=term.predList[i];if(pred.id&&headlump.attributemap.id!==pred.id){return false}if(pred.clazz&&!hasCssClass(pred.clazz,headclazz)){return false}if(pred.tag&&headlump.tagname!==pred.tag){return false}}return true}}function tagStartCut(headlump){var togo;var headclazz=headlump.attributemap["class"];var i;if(headclazz){var split=headclazz.split(" ");for(i=0;i<split.length;++i){var simpleCut=simpleClassCutpoints[split[i].trim()];if(simpleCut){return simpleCut}}}for(i=0;i<cutpoints.length;++i){var cut=cutpoints[i];var cutstat=cutstatus[i];var nextterm=cutstat.length;if(nextterm<cut.tree.length){var term=cut.tree[nextterm];if(nextterm>0){if(cut.tree[nextterm-1].child&&cutstat[nextterm-1]!==headlump.nestingdepth-1){continue}}var isMatch=matchNode(term,headlump,headclazz);if(isMatch){cutstat[cutstat.length]=headlump.nestingdepth;if(cutstat.length===cut.tree.length){if(togo!==undefined){fluid.fail("Cutpoint specification error - node "+debugLump(headlump)+" has already matched with rsf:id of "+togo)}if(cut.id===undefined||cut.id===null){fluid.fail("Error in cutpoints list - entry at position "+i+" does not have an id set")}togo=cut.id}}}}return togo}function tagEndCut(){if(cutpoints){for(var i=0;i<cutpoints.length;++i){var cutstat=cutstatus[i];if(cutstat.length>0&&cutstat[cutstat.length-1]===nestingdepth){cutstat.length--}}}}function processTagEnd(){tagEndCut();var endlump=newLump();--nestingdepth;endlump.text="</"+parser.getName()+">";var oldtop=tagstack[tagstack.length-1];oldtop.close_tag=t.lumps[lumpindex-1];tagstack.length--;justended=true}function processTagStart(isempty){++nestingdepth;if(justended){justended=false;var backlump=newLump();backlump.nestingdepth--}if(t.firstdocumentindex===-1){t.firstdocumentindex=lumpindex}var headlump=newLump();var stacktop=tagstack[tagstack.length-1];headlump.uplump=stacktop;var tagname=parser.getName();headlump.tagname=tagname;var attrs=headlump.attributemap=parser.m_attributes;var ID=attrs[fluid.ID_ATTRIBUTE];if(ID===undefined){ID=tagStartCut(headlump)}for(var attrname in attrs){if(ID===undefined){if(/href|src|codebase|action/.test(attrname)){ID="scr=rewrite-url"}else if(ID===undefined&&/for|headers/.test(attrname)){ID="scr=null"}}}if(ID){if(ID.charCodeAt(0)===126){ID=ID.substring(1);headlump.elide=true}checkContribute(ID,headlump);headlump.rsfID=ID;var downreg=findTopContainer();if(!downreg.downmap){downreg.downmap={}}while(downreg){if(downreg.downmap){addLump(downreg.downmap,ID,headlump)}downreg=downreg.uplump}addLump(t.globalmap,ID,headlump);var colpos=ID.indexOf(":");if(colpos!==-1){var prefix=ID.substring(0,colpos);if(!stacktop.finallump){stacktop.finallump={}}stacktop.finallump[prefix]=headlump}}headlump.text="<"+tagname+fluid.dumpAttributes(attrs)+(isempty&&!ID?"/>":">");tagstack[tagstack.length]=headlump;if(isempty){if(ID){processTagEnd()}else{--nestingdepth;tagstack.length--}}}function processDefaultTag(){if(defstart!==-1){if(t.firstdocumentindex===-1){t.firstdocumentindex=lumpindex}var text=parser.getContent().substr(defstart,defend-defstart);justended=false;var newlump=newLump();newlump.text=text;defstart=-1}}t=fluid.XMLViewTemplate();init(baseURL,opts.debugMode,cutpoints_in);var idpos=template.indexOf(fluid.ID_ATTRIBUTE);if(scanStart){var brackpos=template.indexOf(">",idpos);parser=fluid.XMLP(template.substring(brackpos+1))}else{parser=fluid.XMLP(template)}parseloop:while(true){var iEvent=parser.next();switch(iEvent){case fluid.XMLP._ELM_B:processDefaultTag();processTagStart(false,"");break;case fluid.XMLP._ELM_E:processDefaultTag();processTagEnd();break;case fluid.XMLP._ELM_EMP:processDefaultTag();processTagStart(true,"");break;case fluid.XMLP._PI:case fluid.XMLP._DTD:defstart=-1;continue;case fluid.XMLP._TEXT:case fluid.XMLP._ENTITY:case fluid.XMLP._CDATA:case fluid.XMLP._COMMENT:if(defstart===-1){defstart=parser.m_cB}defend=parser.m_cE;break;case fluid.XMLP._ERROR:fluid.setLogging(true);var message="Error parsing template: "+parser.m_cAlt+" at line "+parser.getLineNumber();fluid.log(message);fluid.log("Just read: "+parser.m_xml.substring(parser.m_iP-30,parser.m_iP));fluid.log("Still to read: "+parser.m_xml.substring(parser.m_iP,parser.m_iP+30));fluid.fail(message);break parseloop;case fluid.XMLP._NONE:break parseloop}}processDefaultTag();var excess=tagstack.length-1;if(excess){fluid.fail("Error parsing template - unclosed tag(s) of depth "+excess+": "+fluid.transform(tagstack.splice(1,excess),(function(lump){return debugLump(lump)})).join(", "))}return t};fluid.debugLump=function(lump){var togo=lump.text;togo+=" at ";togo+="lump line "+lump.line+" column "+lump.column+" index "+lump.lumpindex;togo+=lump.parent.href===null?"":" in file "+lump.parent.href;return togo};fluid.ID_ATTRIBUTE="rsf:id";fluid.getPrefix=function(id){var colpos=id.indexOf(":");return colpos===-1?id:id.substring(0,colpos)};fluid.SplitID=function(id){var that={};var colpos=id.indexOf(":");if(colpos===-1){that.prefix=id}else{that.prefix=id.substring(0,colpos);that.suffix=id.substring(colpos+1)}return that};fluid.XMLViewTemplate=function(){return{globalmap:{},collectmap:{},lumps:[],firstdocumentindex:-1}};fluid.XMLEncode=function(text){return text.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\"/g,""")};fluid.dumpAttributes=function(attrcopy){var togo="";for(var attrname in attrcopy){var attrvalue=attrcopy[attrname];if(attrvalue!==null&&attrvalue!==undefined){togo+=" "+attrname+'="'+attrvalue+'"'}}return togo};fluid.aggregateMMap=function(target,source){for(var key in source){var targhas=target[key];if(!targhas){target[key]=[]}target[key]=target[key].concat(source[key])}};fluid.parseTemplates=function(resourceSpec,templateList,opts){var togo=[];opts=opts||{};togo.globalmap={};for(var i=0;i<templateList.length;++i){var resource=resourceSpec[templateList[i]];var lastslash=resource.href.lastIndexOf("/");var baseURL=lastslash===-1?"":resource.href.substring(0,lastslash+1);var template=fluid.parseTemplate(resource.resourceText,baseURL,opts.scanStart&&i===0,resource.cutpoints,opts);if(i===0){fluid.aggregateMMap(togo.globalmap,template.globalmap)}template.href=resource.href;template.baseURL=baseURL;template.resourceKey=resource.resourceKey;togo[i]=template;fluid.aggregateMMap(togo.globalmap,template.rootlump.downmap)}return togo}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";function debugPosition(component){return"as child of "+(component.parent.fullID?"component with full ID "+component.parent.fullID:"root")}function computeFullID(component){var togo="";var move=component;if(component.children===undefined){togo=component.ID+(component.localID!==undefined?component.localID:"");move=component.parent}while(move.parent){var parent=move.parent;if(move.fullID!==undefined){togo=move.fullID+togo;return togo}if(move.noID===undefined){var ID=move.ID;if(ID===undefined){fluid.fail("Error in component tree - component found with no ID "+debugPosition(parent)+": please check structure")}var colpos=ID.indexOf(":");var prefix=colpos===-1?ID:ID.substring(0,colpos);togo=prefix+":"+(move.localID===undefined?"":move.localID)+":"+togo}move=parent}return togo}var renderer={};renderer.isBoundPrimitive=function(value){return fluid.isPrimitive(value)||fluid.isArrayable(value)&&(value.length===0||typeof value[0]==="string")};var unzipComponent;function processChild(value,key){if(renderer.isBoundPrimitive(value)){return{componentType:"UIBound",value:value,ID:key}}else{var unzip=unzipComponent(value);if(unzip.ID){return{ID:key,componentType:"UIContainer",children:[unzip]}}else{unzip.ID=key;return unzip}}}function fixChildren(children){if(!fluid.isArrayable(children)){var togo=[];for(var key in children){var value=children[key];if(fluid.isArrayable(value)){for(var i=0;i<value.length;++i){var processed=processChild(value[i],key);togo[togo.length]=processed}}else{togo[togo.length]=processChild(value,key)}}return togo}else{return children}}function fixupValue(uibound,model,resolverGetConfig){if(uibound.value===undefined&&uibound.valuebinding!==undefined){uibound.value=fluid.get(model,uibound.valuebinding,resolverGetConfig)}}function upgradeBound(holder,property,model,resolverGetConfig){if(holder[property]!==undefined){if(renderer.isBoundPrimitive(holder[property])){holder[property]={value:holder[property]}}else if(holder[property].messagekey){holder[property].componentType="UIMessage"}}else{holder[property]={value:null}}fixupValue(holder[property],model,resolverGetConfig)}renderer.duckMap={children:"UIContainer",value:"UIBound",valuebinding:"UIBound",messagekey:"UIMessage",markup:"UIVerbatim",selection:"UISelect",target:"UILink",choiceindex:"UISelectChoice",functionname:"UIInitBlock"};var boundMap={UISelect:["selection","optionlist","optionnames"],UILink:["target","linktext"],UIVerbatim:["markup"],UIMessage:["messagekey"]};renderer.boundMap=fluid.transform(boundMap,fluid.arrayToHash);renderer.inferComponentType=function(component){for(var key in renderer.duckMap){if(component[key]!==undefined){return renderer.duckMap[key]}}};renderer.applyComponentType=function(component){component.componentType=renderer.inferComponentType(component);if(component.componentType===undefined&&component.ID!==undefined){component.componentType="UIBound"}};unzipComponent=function(component,model,resolverGetConfig){if(component){renderer.applyComponentType(component)}if(!component||component.componentType===undefined){var decorators=component.decorators;if(decorators){delete component.decorators}component={componentType:"UIContainer",children:component};component.decorators=decorators}var cType=component.componentType;if(cType==="UIContainer"){component.children=fixChildren(component.children)}else{var map=renderer.boundMap[cType];if(map){fluid.each(map,(function(value,key){upgradeBound(component,key,model,resolverGetConfig)}))}}return component};function fixupTree(tree,model,resolverGetConfig){if(tree.componentType===undefined){tree=unzipComponent(tree,model,resolverGetConfig)}if(tree.componentType!=="UIContainer"&&!tree.parent){tree={children:[tree]}}if(tree.children){tree.childmap={};for(var i=0;i<tree.children.length;++i){var child=tree.children[i];if(child.componentType===undefined){child=unzipComponent(child,model,resolverGetConfig);tree.children[i]=child}child.parent=tree;if(child.ID===undefined){fluid.fail("Error in component tree: component found with no ID "+debugPosition(child))}tree.childmap[child.ID]=child;var colpos=child.ID.indexOf(":");if(colpos===-1){}else{var prefix=child.ID.substring(0,colpos);var childlist=tree.childmap[prefix];if(!childlist){childlist=[];tree.childmap[prefix]=childlist}if(child.localID===undefined&&childlist.length!==0){child.localID=childlist.length}childlist[childlist.length]=child}child.fullID=computeFullID(child);var componentType=child.componentType;if(componentType==="UISelect"){child.selection.fullID=child.fullID}else if(componentType==="UIInitBlock"){var call=child.functionname+"(";var childArgs=child.arguments;for(var j=0;j<childArgs.length;++j){if(childArgs[j]instanceof fluid.ComponentReference){childArgs[j]=child.parent.fullID+childArgs[j].reference}call+=JSON.stringify(childArgs[j]);if(j<childArgs.length-1){call+=", "}}child.markup={value:call+")\n"};child.componentType="UIVerbatim"}else if(componentType==="UIBound"){fixupValue(child,model,resolverGetConfig)}fixupTree(child,model,resolverGetConfig)}}return tree}fluid.NULL_STRING="▩null▩";var LINK_ATTRIBUTES={a:"href",link:"href",img:"src",frame:"src",script:"src",style:"src",input:"src",embed:"src",form:"action",applet:"codebase",object:"codebase"};renderer.decoratorComponentPrefix="**-renderer-";renderer.IDtoComponentName=function(ID,num){return renderer.decoratorComponentPrefix+ID.replace(/\./g,"")+"-"+num};renderer.invokeFluidDecorator=function(func,args,ID,num,options){var that;if(options.parentComponent){var parent=options.parentComponent;var name=renderer.IDtoComponentName(ID,num);fluid.set(parent,["options","components",name],{type:func,container:args[0],options:args[1]});that=fluid.initDependent(options.parentComponent,name)}else{that=fluid.invokeGlobalFunction(func,args)}return that};fluid.renderer=function(templates,tree,options,fossilsIn){options=options||{};tree=tree||{};var debugMode=options.debugMode;if(!options.messageLocator&&options.messageSource){options.messageLocator=fluid.resolveMessageSource(options.messageSource)}options.document=options.document||document;options.jQuery=options.jQuery||$;options.fossils=options.fossils||fossilsIn||{};var globalmap={};var branchmap={};var rewritemap={};var seenset={};var collected={};var out="";var renderOptions=options;var decoratorQueue=[];var renderedbindings={};var usedIDs={};var that={options:options};function getRewriteKey(template,parent,id){return template.resourceKey+parent.fullID+id}function resolveInScope(searchID,defprefix,scope){var deflump;var scopelook=scope?scope[searchID]:null;if(scopelook){for(var i=0;i<scopelook.length;++i){var scopelump=scopelook[i];if(!deflump&&scopelump.rsfID===defprefix){deflump=scopelump}if(scopelump.rsfID===searchID){return scopelump}}}return deflump}function resolveCall(sourcescope,child){var searchID=child.jointID?child.jointID:child.ID;var split=fluid.SplitID(searchID);var defprefix=split.prefix+":";var match=resolveInScope(searchID,defprefix,sourcescope.downmap,child);if(match){return match}if(child.children){match=resolveInScope(searchID,defprefix,globalmap,child);if(match){return match}}return null}function noteCollected(template){if(!seenset[template.href]){fluid.aggregateMMap(collected,template.collectmap);seenset[template.href]=true}}var fetchComponent;function resolveRecurse(basecontainer,parentlump){var i;var id;var resolved;for(i=0;i<basecontainer.children.length;++i){var branch=basecontainer.children[i];if(branch.children){resolved=resolveCall(parentlump,branch);if(resolved){branchmap[branch.fullID]=resolved;id=resolved.attributemap.id;if(id!==undefined){rewritemap[getRewriteKey(parentlump.parent,basecontainer,id)]=branch.fullID}noteCollected(resolved.parent);resolveRecurse(branch,resolved)}}}if(parentlump.downmap){for(id in parentlump.downmap){var lumps=parentlump.downmap[id];for(i=0;i<lumps.length;++i){var lump=lumps[i];var lumpid=lump.attributemap.id;if(lumpid!==undefined&&lump.rsfID!==undefined){resolved=fetchComponent(basecontainer,lump.rsfID);if(resolved!==null){var resolveID=resolved.fullID;rewritemap[getRewriteKey(parentlump.parent,basecontainer,lumpid)]=resolveID}}}}}}function resolveBranches(globalmapp,basecontainer,parentlump){branchmap={};rewritemap={};seenset={};collected={};globalmap=globalmapp;branchmap[basecontainer.fullID]=parentlump;resolveRecurse(basecontainer,parentlump)}function dumpTillLump(lumps,start,limit){for(;start<limit;++start){var text=lumps[start].text;if(text){out+=lumps[start].text}}}function dumpScan(lumps,renderindex,basedepth,closeparent,insideleaf){var start=renderindex;while(true){if(renderindex===lumps.length){break}var lump=lumps[renderindex];if(lump.nestingdepth<basedepth){break}if(lump.rsfID!==undefined){if(!insideleaf){break}if(insideleaf&&lump.nestingdepth>basedepth+(closeparent?0:1)){fluid.log("Error in component tree - leaf component found to contain further components - at "+lump.toString())}else{break}}++renderindex}if(!closeparent&&(renderindex===lumps.length||!lumps[renderindex].rsfID)){--renderindex}dumpTillLump(lumps,start,renderindex);return renderindex}function isPlaceholder(){return false}function isValue(value){return value!==null&&value!==undefined&&!isPlaceholder(value)}var trc={};function openTag(){if(!trc.iselide){out+="<"+trc.uselump.tagname}}function closeTag(){if(!trc.iselide){out+="</"+trc.uselump.tagname+">"}}function renderUnchanged(){dumpTillLump(trc.uselump.parent.lumps,trc.uselump.lumpindex+1,trc.close.lumpindex+(trc.iselide?0:1))}function isSelfClose(){return trc.endopen.lumpindex===trc.close.lumpindex&&fluid.XMLP.closedTags[trc.uselump.tagname]}function dumpTemplateBody(){if(isSelfClose()){if(!trc.iselide){out+="/>"}}else{if(!trc.iselide){out+=">"}dumpTillLump(trc.uselump.parent.lumps,trc.endopen.lumpindex,trc.close.lumpindex+(trc.iselide?0:1))}}function replaceAttributes(){if(!trc.iselide){out+=fluid.dumpAttributes(trc.attrcopy)}dumpTemplateBody()}function replaceAttributesOpen(){if(trc.iselide){replaceAttributes()}else{out+=fluid.dumpAttributes(trc.attrcopy);var selfClose=isSelfClose();out+=selfClose?"/>":">";trc.nextpos=selfClose?trc.close.lumpindex+1:trc.endopen.lumpindex}}function replaceBody(value){out+=fluid.dumpAttributes(trc.attrcopy);if(!trc.iselide){out+=">"}out+=fluid.XMLEncode(value.toString());closeTag()}function rewriteLeaf(value){if(isValue(value)){replaceBody(value)}else{replaceAttributes()}}function rewriteLeafOpen(value){if(trc.iselide){rewriteLeaf(trc.value)}else{if(isValue(value)){replaceBody(value)}else{replaceAttributesOpen()}}}function rewriteUrl(template,url){if(renderOptions.urlRewriter){var rewritten=renderOptions.urlRewriter(url);if(rewritten){return rewritten}}if(!renderOptions.rebaseURLs){return url}var protpos=url.indexOf(":/");if(url.charAt(0)==="/"||protpos!==-1&&protpos<7){return url}else{return renderOptions.baseURL+url}}function dumpHiddenField(todump){out+='<input type="hidden" ';var isvirtual=todump.virtual;var outattrs={};outattrs[isvirtual?"id":"name"]=todump.name;outattrs.value=todump.value;out+=fluid.dumpAttributes(outattrs);out+=" />\n"}var outDecoratorsImpl;function applyAutoBind(torender,finalID){if(!finalID){return}var tagname=trc.uselump.tagname;var applier=renderOptions.applier;function applyFunc(){fluid.applyBoundChange(fluid.byId(finalID,renderOptions.document),undefined,applier)}if(renderOptions.autoBind&&/input|select|textarea/.test(tagname)&&!renderedbindings[finalID]){var decorators=[{jQuery:["on","change",applyFunc]}];if($.browser.msie&&tagname==="input"&&/radio|checkbox/.test(trc.attrcopy.type)){decorators.push({jQuery:["on","click",applyFunc]})}if($.browser.safari&&tagname==="input"&&trc.attrcopy.type==="radio"){decorators.push({jQuery:["on","keyup",applyFunc]})}outDecoratorsImpl(torender,decorators,trc.attrcopy,finalID)}}function dumpBoundFields(torender,parent){if(torender){var holder=parent?parent:torender;if(renderOptions.fossils&&holder.valuebinding!==undefined){var fossilKey=holder.submittingname||torender.finalID;renderOptions.fossils[fossilKey]={name:fossilKey,EL:holder.valuebinding,oldvalue:holder.value};applyAutoBind(torender,torender.finalID)}if(torender.fossilizedbinding){dumpHiddenField(torender.fossilizedbinding)}if(torender.fossilizedshaper){dumpHiddenField(torender.fossilizedshaper)}}}function dumpSelectionBindings(uiselect){if(!renderedbindings[uiselect.selection.fullID]){renderedbindings[uiselect.selection.fullID]=true;dumpBoundFields(uiselect.selection);dumpBoundFields(uiselect.optionlist);dumpBoundFields(uiselect.optionnames)}}function isSelectedValue(torender,value){var selection=torender.selection;return fluid.isArrayable(selection.value)?selection.value.indexOf(value)!==-1:selection.value===value}function getRelativeComponent(component,relativeID){component=component.parent;while(relativeID.indexOf("..::")===0){relativeID=relativeID.substring(4);component=component.parent}return component.childmap[relativeID]}function rewriteRewriteMap(from,to){fluid.each(rewritemap,(function(value,key){if(value===from){rewritemap[key]=to}}))}function adjustForID(attrcopy,component,late,forceID){if(!late){delete attrcopy["rsf:id"]}if(component.finalID!==undefined){attrcopy.id=component.finalID}else if(forceID!==undefined){attrcopy.id=forceID}else{if(attrcopy.id||late){attrcopy.id=component.fullID}}var count=1;var baseid=attrcopy.id;while(renderOptions.document.getElementById(attrcopy.id)||usedIDs[attrcopy.id]){attrcopy.id=baseid+"-"+count++}if(count!==1){rewriteRewriteMap(baseid,attrcopy.id)}component.finalID=attrcopy.id;return attrcopy.id}function assignSubmittingName(attrcopy,component,parent){var submitting=parent||component;adjustForID(attrcopy,component,true,component.fullID);if(submitting.submittingname===undefined&&submitting.willinput!==false){submitting.submittingname=submitting.finalID||submitting.fullID}return submitting.submittingname}function explodeDecorators(decorators){var togo=[];if(decorators.type){togo[0]=decorators}else{for(var key in decorators){if(key==="$"){key="jQuery"}var value=decorators[key];var decorator={type:key};if(key==="jQuery"){decorator.func=value[0];decorator.args=value.slice(1)}else if(key==="addClass"||key==="removeClass"){decorator.classes=value}else if(key==="attrs"){decorator.attributes=value}else if(key==="identify"){decorator.key=value}togo[togo.length]=decorator}}return togo}outDecoratorsImpl=function(torender,decorators,attrcopy,finalID){var id;var sanitizeAttrs=function(value,key){if(value===null||value===undefined){delete attrcopy[key]}else{attrcopy[key]=fluid.XMLEncode(value)}};renderOptions.idMap=renderOptions.idMap||{};for(var i=0;i<decorators.length;++i){var decorator=decorators[i];var type=decorator.type;if(!type){var explodedDecorators=explodeDecorators(decorator);outDecoratorsImpl(torender,explodedDecorators,attrcopy,finalID);continue}if(type==="$"){type=decorator.type="jQuery"}if(type==="jQuery"||type==="event"||type==="fluid"){id=adjustForID(attrcopy,torender,true,finalID);if(decorator.ids===undefined){decorator.ids=[];decoratorQueue[decoratorQueue.length]=decorator}decorator.ids.push(id)}else if(type==="attrs"){fluid.each(decorator.attributes,sanitizeAttrs)}else if(type==="addClass"||type==="removeClass"){var fakeNode=$("<div>",{class:attrcopy["class"]})[0];renderOptions.jQuery(fakeNode)[type](decorator.classes);attrcopy["class"]=fakeNode.className}else if(type==="identify"){id=adjustForID(attrcopy,torender,true,finalID);renderOptions.idMap[decorator.key]=id}else if(type!=="null"){fluid.log("Unrecognised decorator of type "+type+" found at component of ID "+finalID)}}};function outDecorators(torender,attrcopy){if(!torender.decorators){return}if(torender.decorators.length===undefined){torender.decorators=explodeDecorators(torender.decorators)}outDecoratorsImpl(torender,torender.decorators,attrcopy)}function dumpBranchHead(branch,targetlump){if(targetlump.elide){return}var attrcopy={};$.extend(true,attrcopy,targetlump.attributemap);adjustForID(attrcopy,branch);outDecorators(branch,attrcopy);out+="<"+targetlump.tagname+" ";out+=fluid.dumpAttributes(attrcopy);out+=">"}function resolveArgs(args){if(!args){return args}args=fluid.copy(args);return fluid.transform(args,(function(arg,index){upgradeBound(args,index,renderOptions.model,renderOptions.resolverGetConfig);return args[index].value}))}function degradeMessage(torender){if(torender.componentType==="UIMessage"){torender.componentType="UIBound";if(!renderOptions.messageLocator){torender.value="[No messageLocator is configured in options - please consult documentation on options.messageSource]"}else{upgradeBound(torender,"messagekey",renderOptions.model,renderOptions.resolverGetConfig);var resArgs=resolveArgs(torender.args);torender.value=renderOptions.messageLocator(torender.messagekey.value,resArgs)}}}function renderComponent(torender){var value;var attrcopy=trc.attrcopy;degradeMessage(torender);var componentType=torender.componentType;var tagname=trc.uselump.tagname;outDecorators(torender,attrcopy);function makeFail(torender,end){fluid.fail("Error in component tree - UISelectChoice with id "+torender.fullID+end)}if(componentType==="UIBound"||componentType==="UISelectChoice"){var parent;if(torender.choiceindex!==undefined){if(torender.parentRelativeID!==undefined){parent=getRelativeComponent(torender,torender.parentRelativeID);if(!parent){makeFail(torender," has parentRelativeID of "+torender.parentRelativeID+" which cannot be resolved")}}else{makeFail(torender," does not have parentRelativeID set")}assignSubmittingName(attrcopy,torender,parent.selection);dumpSelectionBindings(parent)}var submittingname=parent?parent.selection.submittingname:torender.submittingname;if(!parent&&torender.valuebinding){submittingname=assignSubmittingName(attrcopy,torender)}if(tagname==="input"||tagname==="textarea"){if(submittingname!==undefined){attrcopy.name=submittingname}}dumpBoundFields(torender,parent?parent.selection:null);if(typeof torender.value==="boolean"||attrcopy.type==="radio"||attrcopy.type==="checkbox"){var underlyingValue;var directValue=torender.value;if(torender.choiceindex!==undefined){if(!parent.optionlist.value){fluid.fail("Error in component tree - selection control with full ID "+parent.fullID+" has no values")}underlyingValue=parent.optionlist.value[torender.choiceindex];directValue=isSelectedValue(parent,underlyingValue)}if(isValue(directValue)){if(directValue){attrcopy.checked="checked"}else{delete attrcopy.checked}}attrcopy.value=fluid.XMLEncode(underlyingValue?underlyingValue:"true");rewriteLeaf(null)}else if(fluid.isArrayable(torender.value)){renderUnchanged()}else{value=parent?parent[tagname==="textarea"||tagname==="input"?"optionlist":"optionnames"].value[torender.choiceindex]:torender.value;if(tagname==="textarea"){if(isPlaceholder(value)&&torender.willinput){value=""}rewriteLeaf(value)}else if(tagname==="input"){if(torender.willinput||isValue(value)){attrcopy.value=fluid.XMLEncode(String(value))}rewriteLeaf(null)}else{delete attrcopy.name;rewriteLeafOpen(value)}}}else if(componentType==="UISelect"){var ishtmlselect=tagname==="select";var ismultiple=false;if(fluid.isArrayable(torender.selection.value)){ismultiple=true;if(ishtmlselect){attrcopy.multiple="multiple"}}assignSubmittingName(attrcopy,torender.selection);if(ishtmlselect){if(torender.selection.willinput!==false){attrcopy.name=torender.selection.submittingname}applyAutoBind(torender,attrcopy.id)}out+=fluid.dumpAttributes(attrcopy);if(ishtmlselect){out+=">";var values=torender.optionlist.value;var names=torender.optionnames===null||torender.optionnames===undefined||!torender.optionnames.value?values:torender.optionnames.value;if(!names||!names.length){fluid.fail("Error in component tree - UISelect component with fullID "+torender.fullID+" does not have optionnames set")}for(var i=0;i<names.length;++i){out+='<option value="';value=values[i];if(value===null){value=fluid.NULL_STRING}out+=fluid.XMLEncode(value);if(isSelectedValue(torender,value)){out+='" selected="selected'}out+='">';out+=fluid.XMLEncode(names[i]);out+="</option>\n"}closeTag()}else{dumpTemplateBody()}dumpSelectionBindings(torender)}else if(componentType==="UILink"){var attrname=LINK_ATTRIBUTES[tagname];if(attrname){degradeMessage(torender.target);var target=torender.target.value;if(!isValue(target)){target=attrcopy[attrname]}target=rewriteUrl(trc.uselump.parent,target);attrcopy[attrname]=fluid.XMLEncode(target)}value=undefined;if(torender.linktext){degradeMessage(torender.linktext);value=torender.linktext.value}if(!isValue(value)){replaceAttributesOpen()}else{rewriteLeaf(value)}}else if(torender.markup!==undefined){degradeMessage(torender.markup);var rendered=torender.markup.value;if(rendered===null){out+=fluid.dumpAttributes(attrcopy);out+=">";renderUnchanged()}else{if(!trc.iselide){out+=fluid.dumpAttributes(attrcopy);out+=">"}out+=rendered;closeTag()}}if(attrcopy.id!==undefined){usedIDs[attrcopy.id]=true}}function rewriteIDRelation(context){var attrname;var attrval=trc.attrcopy["for"];if(attrval!==undefined){attrname="for"}else{attrval=trc.attrcopy.headers;if(attrval!==undefined){attrname="headers"}}if(!attrname){return}var tagname=trc.uselump.tagname;if(attrname==="for"&&tagname!=="label"){return}if(attrname==="headers"&&tagname!=="td"&&tagname!=="th"){return}var rewritten=rewritemap[getRewriteKey(trc.uselump.parent,context,attrval)];if(rewritten!==undefined){trc.attrcopy[attrname]=rewritten}}function renderComment(message){out+="\x3c!-- "+fluid.XMLEncode(message)+"--\x3e"}function renderDebugMessage(message){out+='<span style="background-color:#FF466B;color:white;padding:1px;">';out+=message;out+="</span><br/>"}function reportPath(branch){var path=branch.fullID;return!path?"component tree root":"full path "+path}function renderComponentSystem(context,torendero,lump){var lumpindex=lump.lumpindex;var lumps=lump.parent.lumps;var nextpos=-1;var outerendopen=lumps[lumpindex+1];var outerclose=lump.close_tag;nextpos=outerclose.lumpindex+1;var payloadlist=lump.downmap?lump.downmap["payload-component"]:null;var payload=payloadlist?payloadlist[0]:null;var iselide=lump.rsfID.charCodeAt(0)===126;var endopen=outerendopen;var close=outerclose;var uselump=lump;var attrcopy={};$.extend(true,attrcopy,(payload===null?lump:payload).attributemap);trc.attrcopy=attrcopy;trc.uselump=uselump;trc.endopen=endopen;trc.close=close;trc.nextpos=nextpos;trc.iselide=iselide;rewriteIDRelation(context);if(torendero===null){if(lump.rsfID.indexOf("scr=")===(iselide?1:0)){var scrname=lump.rsfID.substring(4+(iselide?1:0));if(scrname==="ignore"){nextpos=trc.close.lumpindex+1}else if(scrname==="rewrite-url"){torendero={componentType:"UILink",target:{}}}else{openTag();replaceAttributesOpen();nextpos=trc.endopen.lumpindex}}}if(torendero!==null){if(payload){trc.endopen=lumps[payload.lumpindex+1];trc.close=payload.close_tag;trc.uselump=payload;dumpTillLump(lumps,lumpindex,payload.lumpindex);lumpindex=payload.lumpindex}adjustForID(attrcopy,torendero);openTag();renderComponent(torendero);if(payload!==null){if(trc.nextpos===nextpos){dumpTillLump(lumps,trc.close.lumpindex+1,outerclose.lumpindex+1)}}nextpos=trc.nextpos}return nextpos}var renderRecurse;function renderContainer(child,targetlump){var t2=targetlump.parent;var firstchild=t2.lumps[targetlump.lumpindex+1];if(child.children!==undefined){dumpBranchHead(child,targetlump)}else{renderComponentSystem(child.parent,child,targetlump)}renderRecurse(child,targetlump,firstchild)}fetchComponent=function(basecontainer,id){if(id.indexOf("msg=")===0){var key=id.substring(4);return{componentType:"UIMessage",messagekey:key}}while(basecontainer){var togo=basecontainer.childmap[id];if(togo){return togo}basecontainer=basecontainer.parent}return null};function fetchComponents(basecontainer,id){var togo;while(basecontainer){togo=basecontainer.childmap[id];if(togo){break}basecontainer=basecontainer.parent}return togo}function findChild(sourcescope,child){var split=fluid.SplitID(child.ID);var headlumps=sourcescope.downmap[child.ID];if(!headlumps){headlumps=sourcescope.downmap[split.prefix+":"]}return headlumps?headlumps[0]:null}renderRecurse=function(basecontainer,parentlump,baselump){var children;var targetlump;var child;var renderindex=baselump.lumpindex;var basedepth=parentlump.nestingdepth;var t1=parentlump.parent;var rendered;if(debugMode){rendered={}}while(true){renderindex=dumpScan(t1.lumps,renderindex,basedepth,!parentlump.elide,false);if(renderindex===t1.lumps.length){break}var lump=t1.lumps[renderindex];var id=lump.rsfID;if(lump.nestingdepth<basedepth||id===undefined){break}if(id.charCodeAt(0)===126){id=id.substring(1)}if(id.indexOf(":")!==-1){var prefix=fluid.getPrefix(id);children=fetchComponents(basecontainer,prefix);var finallump=lump.uplump.finallump[prefix];var closefinal=finallump.close_tag;if(children){for(var i=0;i<children.length;++i){child=children[i];if(child.children){if(debugMode){rendered[child.fullID]=true}targetlump=branchmap[child.fullID];if(targetlump){if(debugMode){renderComment("Branching for "+child.fullID+" from "+fluid.debugLump(lump)+" to "+fluid.debugLump(targetlump))}renderContainer(child,targetlump);if(debugMode){renderComment("Branch returned for "+child.fullID+fluid.debugLump(lump)+" to "+fluid.debugLump(targetlump))}}else if(debugMode){renderDebugMessage("No matching template branch found for branch container with full ID "+child.fullID+" rendering from parent template branch "+fluid.debugLump(baselump))}}else{targetlump=findChild(parentlump,child);if(!targetlump){if(debugMode){renderDebugMessage("Repetitive leaf with full ID "+child.fullID+" could not be rendered from parent template branch "+fluid.debugLump(baselump))}continue}var renderend=renderComponentSystem(basecontainer,child,targetlump);var wasopentag=renderend<t1.lumps.lengtn&&t1.lumps[renderend].nestingdepth>=targetlump.nestingdepth;var newbase=child.children?child:basecontainer;if(wasopentag){renderRecurse(newbase,targetlump,t1.lumps[renderend]);renderend=targetlump.close_tag.lumpindex+1}if(i!==children.length-1){if(renderend<closefinal.lumpindex){dumpScan(t1.lumps,renderend,targetlump.nestingdepth-1,false,false)}}else{dumpScan(t1.lumps,renderend,targetlump.nestingdepth,true,false)}}}}else{if(debugMode){renderDebugMessage("No branch container with prefix "+prefix+": found in container "+reportPath(basecontainer)+" rendering at template position "+fluid.debugLump(baselump)+", skipping")}}renderindex=closefinal.lumpindex+1;if(debugMode){renderComment("Stack returned from branch for ID "+id+" to "+fluid.debugLump(baselump)+": skipping from "+fluid.debugLump(lump)+" to "+fluid.debugLump(closefinal))}}else{var component;if(id){component=fetchComponent(basecontainer,id,lump);if(debugMode&&component){rendered[component.fullID]=true}}if(component&&component.children!==undefined){renderContainer(component);renderindex=lump.close_tag.lumpindex+1}else{renderindex=renderComponentSystem(basecontainer,component,lump)}}if(renderindex===t1.lumps.length){break}}if(debugMode){children=basecontainer.children;for(var key=0;key<children.length;++key){child=children[key];if(!rendered[child.fullID]){renderDebugMessage("Component "+child.componentType+" with full ID "+child.fullID+" could not be found within template "+fluid.debugLump(baselump))}}}};function renderCollect(collump){dumpTillLump(collump.parent.lumps,collump.lumpindex,collump.close_tag.lumpindex+1)}function renderCollects(){for(var key in collected){var collist=collected[key];for(var i=0;i<collist.length;++i){renderCollect(collist[i])}}}function processDecoratorQueue(){for(var i=0;i<decoratorQueue.length;++i){var decorator=decoratorQueue[i];for(var j=0;j<decorator.ids.length;++j){var id=decorator.ids[j];var node=fluid.byId(id,renderOptions.document);if(!node){fluid.fail("Error during rendering - component with id "+id+" which has a queued decorator was not found in the output markup")}if(decorator.type==="jQuery"){var jnode=renderOptions.jQuery(node);jnode[decorator.func].apply(jnode,fluid.makeArray(decorator.args))}else if(decorator.type==="fluid"){var args=decorator.args;if(!args){var thisContainer=renderOptions.jQuery(node);if(!decorator.container){decorator.container=thisContainer}else{decorator.container.push(node)}args=[thisContainer,decorator.options]}var that=renderer.invokeFluidDecorator(decorator.func,args,id,i,options);decorator.that=that}else if(decorator.type==="event"){node[decorator.event]=decorator.handler}}}}that.renderTemplates=function(){tree=fixupTree(tree,options.model,options.resolverGetConfig);var template=templates[0];resolveBranches(templates.globalmap,tree,template.rootlump);renderedbindings={};renderCollects();renderRecurse(tree,template.rootlump,template.lumps[template.firstdocumentindex]);return out};that.processDecoratorQueue=function(){processDecoratorQueue()};return that};jQuery.extend(true,fluid.renderer,renderer);fluid.ComponentReference=function(reference){this.reference=reference};fluid.explode=function(hash,basepath){var togo=[];for(var key in hash){var binding=basepath===undefined?key:basepath+"."+key;togo[togo.length]={ID:key,value:hash[key],valuebinding:binding}}return togo};fluid.explodeSelectionToInputs=function(optionlist,opts){return fluid.transform(optionlist,(function(option,index){return{ID:opts.rowID,children:[{ID:opts.inputID,parentRelativeID:"..::"+opts.selectID,choiceindex:index},{ID:opts.labelID,parentRelativeID:"..::"+opts.selectID,choiceindex:index}]}}))};fluid.renderTemplates=function(templates,tree,options,fossilsIn){var renderer=fluid.renderer(templates,tree,options,fossilsIn);var rendered=renderer.renderTemplates();return rendered};fluid.reRender=function(templates,node,tree,options){options=options||{};var renderer=fluid.renderer(templates,tree,options,options.fossils);options=renderer.options;node=fluid.unwrap(node);var lastFocusedElement=fluid.getLastFocusedElement?fluid.getLastFocusedElement():null;var lastId;if(lastFocusedElement&&fluid.dom.isContainer(node,lastFocusedElement)){lastId=lastFocusedElement.id}if($.browser.msie){options.jQuery(node).empty()}else{node.innerHTML=""}var rendered=renderer.renderTemplates();if(options.renderRaw){rendered=fluid.XMLEncode(rendered);rendered=rendered.replace(/\n/g,"<br/>")}if(options.model){fluid.bindFossils(node,options.model,options.fossils)}if($.browser.msie){options.jQuery(node).html(rendered)}else{node.innerHTML=rendered}renderer.processDecoratorQueue();if(lastId){var element=fluid.byId(lastId,options.document);if(element){options.jQuery(element).trigger("focus")}}return templates};function findNodeValue(rootNode){var node=fluid.dom.iterateDom(rootNode,(function(node){return node.nodeType===8||node.nodeType===4?"stop":null}),true);var value=node.nodeValue;if(value.indexOf("[CDATA[")===0){return value.substring(6,value.length-2)}else{return value}}fluid.extractTemplate=function(node,armouring){if(!armouring){return node.innerHTML}else{return findNodeValue(node)}};fluid.render=function(source,target,tree,options){options=options||{};var template=source;if(typeof source==="object"){template=fluid.extractTemplate(fluid.unwrap(source.node),source.armouring)}target=fluid.unwrap(target);var resourceSpec={base:{resourceText:template,href:".",resourceKey:".",cutpoints:options.cutpoints}};var templates=fluid.parseTemplates(resourceSpec,["base"],options);return fluid.reRender(templates,target,tree,options)};fluid.selfRender=function(node,tree,options){options=options||{};return fluid.render({node:node,armouring:options.armouring},node,tree,options)}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";if(!fluid.renderer){fluid.fail("fluidRenderer.js is a necessary dependency of RendererUtilities")}fluid.renderer.visitDecorators=function(that,visitor){fluid.visitComponentChildren(that,(function(component,name){if(name.indexOf(fluid.renderer.decoratorComponentPrefix)===0){visitor(component,name)}}),{flat:true},[])};fluid.renderer.clearDecorators=function(that){var instantiator=fluid.getInstantiator(that);fluid.renderer.visitDecorators(that,(function(component,name){instantiator.clearComponent(that,name)}))};fluid.renderer.getDecoratorComponents=function(that){var togo={};fluid.renderer.visitDecorators(that,(function(component,name){togo[name]=component}));return togo};fluid.renderer.modeliseOptions=function(options,defaults,baseOptions){return $.extend({},defaults,fluid.filterKeys(baseOptions,["model","applier"]),options)};fluid.renderer.reverseMerge=function(target,source,names){names=fluid.makeArray(names);fluid.each(names,(function(name){if(target[name]===undefined&&source[name]!==undefined){target[name]=source[name]}}))};fluid.renderer.createRendererSubcomponent=function(container,selectors,options,parentThat,fossils){options=options||{};var source=options.templateSource?options.templateSource:{node:$(container)};var nativeModel=options.rendererOptions.model===undefined;var rendererOptions=fluid.renderer.modeliseOptions(options.rendererOptions,null,parentThat);rendererOptions.fossils=fossils||{};rendererOptions.parentComponent=parentThat;if(container.jquery){var cascadeOptions={document:container[0].ownerDocument,jQuery:container.constructor};fluid.renderer.reverseMerge(rendererOptions,cascadeOptions,fluid.keys(cascadeOptions))}var that={};var templates=null;that.render=function(tree){var cutpointFn=options.cutpointGenerator||"fluid.renderer.selectorsToCutpoints";rendererOptions.cutpoints=rendererOptions.cutpoints||fluid.invokeGlobalFunction(cutpointFn,[selectors,options]);if(nativeModel){rendererOptions.model=parentThat.model}var renderTarget=$(options.renderTarget?options.renderTarget:container);if(templates){fluid.clear(rendererOptions.fossils);fluid.reRender(templates,renderTarget,tree,rendererOptions)}else{if(typeof source==="function"){source=source()}templates=fluid.render(source,renderTarget,tree,rendererOptions)}};return that};fluid.defaults("fluid.rendererComponent",{gradeNames:["fluid.viewComponent"],initFunction:"fluid.initRendererComponent",mergePolicy:{"rendererOptions.idMap":"nomerge",protoTree:"noexpand, replace",parentBundle:"nomerge","changeApplierOptions.resolverSetConfig":"resolverSetConfig"},invokers:{refreshView:{funcName:"fluid.rendererComponent.refreshView",args:"{that}"},produceTree:{funcName:"fluid.rendererComponent.produceTree",args:"{that}"}},rendererOptions:{autoBind:true},events:{onResourcesFetched:null,prepareModelForRender:null,onRenderTree:null,afterRender:null},listeners:{onCreate:{funcName:"fluid.rendererComponent.renderOnInit",args:["{that}.options.renderOnInit","{that}"],priority:"last"}}});fluid.rendererComponent.renderOnInit=function(renderOnInit,that){if(renderOnInit||that.renderOnInit){that.refreshView()}};fluid.protoExpanderForComponent=function(parentThat,options){var expanderOptions=fluid.renderer.modeliseOptions(options.expanderOptions,{ELstyle:"${}"},parentThat);fluid.renderer.reverseMerge(expanderOptions,options,["resolverGetConfig","resolverSetConfig"]);var expander=fluid.renderer.makeProtoExpander(expanderOptions,parentThat);return expander};fluid.rendererComponent.refreshView=function(that){if(!that.renderer){that.renderOnInit=true;return}else{fluid.renderer.clearDecorators(that);that.events.prepareModelForRender.fire(that.model,that.applier,that);var tree=that.produceTree(that);var rendererFnOptions=that.renderer.rendererFnOptions;if(!rendererFnOptions.noexpand){var expander=fluid.protoExpanderForComponent(that,rendererFnOptions);tree=expander(tree)}that.events.onRenderTree.fire(that,tree);that.renderer.render(tree);that.events.afterRender.fire(that)}};fluid.rendererComponent.produceTree=function(that){var produceTreeOption=that.options.produceTree;return produceTreeOption?(typeof produceTreeOption==="string"?fluid.getGlobalValue(produceTreeOption):produceTreeOption)(that):that.options.protoTree};fluid.initRendererComponent=function(componentName,container,options){var that=fluid.initView(componentName,container,options,{gradeNames:["fluid.rendererComponent"]});fluid.getForComponent(that,"model");fluid.getForComponent(that,"applier");fluid.diagnoseFailedView(componentName,that,fluid.defaults(componentName),arguments);fluid.fetchResources(that.options.resources,that.events.onResourcesFetched.fire);var rendererOptions=fluid.renderer.modeliseOptions(that.options.rendererOptions,null,that);var messageResolver;if(!rendererOptions.messageSource&&that.options.strings){messageResolver=fluid.messageResolver({messageBase:that.options.strings,resolveFunc:that.options.messageResolverFunction,parents:fluid.makeArray(that.options.parentBundle)});rendererOptions.messageSource={type:"resolver",resolver:messageResolver}}fluid.renderer.reverseMerge(rendererOptions,that.options,["resolverGetConfig","resolverSetConfig"]);that.rendererOptions=rendererOptions;var rendererFnOptions=$.extend({},that.options.rendererFnOptions,{rendererOptions:rendererOptions,repeatingSelectors:that.options.repeatingSelectors,selectorsToIgnore:that.options.selectorsToIgnore,expanderOptions:{envAdd:{styles:that.options.styles}}});if(that.options.resources&&that.options.resources.template){rendererFnOptions.templateSource=function(){return that.options.resources.template.resourceText}}fluid.renderer.reverseMerge(rendererFnOptions,that.options,["resolverGetConfig","resolverSetConfig"]);if(rendererFnOptions.rendererTargetSelector){container=function(){return that.dom.locate(rendererFnOptions.rendererTargetSelector)}}var renderer={fossils:{},rendererFnOptions:rendererFnOptions,boundPathForNode:function(node){return fluid.boundPathForNode(node,renderer.fossils)}};var rendererSub=fluid.renderer.createRendererSubcomponent(container,that.options.selectors,rendererFnOptions,that,renderer.fossils);that.renderer=$.extend(renderer,rendererSub);if(messageResolver){that.messageResolver=messageResolver}renderer.refreshView=fluid.getForComponent(that,"refreshView");return that};var removeSelectors=function(selectors,selectorsToIgnore){fluid.each(fluid.makeArray(selectorsToIgnore),(function(selectorToIgnore){delete selectors[selectorToIgnore]}));return selectors};var markRepeated=function(selectorKey,repeatingSelectors){if(repeatingSelectors){fluid.each(repeatingSelectors,(function(repeatingSelector){if(selectorKey===repeatingSelector){selectorKey=selectorKey+":"}}))}return selectorKey};fluid.renderer.selectorsToCutpoints=function(selectors,options){var togo=[];options=options||{};selectors=fluid.copy(selectors);if(options.selectorsToIgnore){selectors=removeSelectors(selectors,options.selectorsToIgnore)}for(var selectorKey in selectors){togo.push({id:markRepeated(selectorKey,options.repeatingSelectors),selector:selectors[selectorKey]})}return togo};fluid.renderer.NO_COMPONENT={};fluid.renderer.mergeComponents=function(target,source){for(var key in source){target[key]=source[key]}return target};fluid.registerNamespace("fluid.renderer.selection");fluid.renderer.selection.inputs=function(options,container,key,config){fluid.expect("Selection to inputs expander",options,["selectID","inputID","labelID","rowID"]);var selection=config.expander(options.tree);var optsToExpand=fluid.censorKeys(options,["tree"]);var expandedOpts=config.expandLight(optsToExpand);var rows=fluid.transform(selection.optionlist.value,(function(option,index){var togo={};var element={parentRelativeID:"..::"+expandedOpts.selectID,choiceindex:index};togo[expandedOpts.inputID]=element;togo[expandedOpts.labelID]=fluid.copy(element);return togo}));var togo={};togo[expandedOpts.selectID]=selection;togo[expandedOpts.rowID]={children:rows};togo=config.expander(togo);return togo};fluid.renderer.repeat=function(options,container,key,config){fluid.expect("Repetition expander",options,["controlledBy","tree"]);var env=config.threadLocal();var path=fluid.extractContextualPath(options.controlledBy,{ELstyle:"ALL"},env);var list=fluid.get(config.model,path,config.resolverGetConfig);var togo={};if(!list||list.length===0){return options.ifEmpty?config.expander(options.ifEmpty):togo}var expanded=[];fluid.each(list,(function(element,i){var EL=fluid.model.composePath(path,i);var envAdd={};if(options.pathAs){envAdd[options.pathAs]="${"+EL+"}"}if(options.valueAs){envAdd[options.valueAs]=fluid.get(config.model,EL,config.resolverGetConfig)}var expandrow=fluid.withEnvironment(envAdd,(function(){return config.expander(options.tree)}),env);if(fluid.isArrayable(expandrow)){if(expandrow.length>0){expanded.push({children:expandrow})}}else if(expandrow!==fluid.renderer.NO_COMPONENT){expanded.push(expandrow)}}));var repeatID=options.repeatID;if(repeatID.indexOf(":")===-1){repeatID=repeatID+":"}fluid.each(expanded,(function(entry){entry.ID=repeatID}));return expanded};fluid.renderer.condition=function(options,container,key,config){fluid.expect("Selection to condition expander",options,["condition"]);var condition;if(options.condition.funcName){var args=config.expandLight(options.condition.args);condition=fluid.invokeGlobalFunction(options.condition.funcName,args)}else if(options.condition.expander){condition=config.expander(options.condition)}else{condition=config.expandLight(options.condition)}var tree=condition?options.trueTree:options.falseTree;if(!tree){tree=fluid.renderer.NO_COMPONENT}return config.expander(tree)};fluid.extractContextualPath=function(string,options,env,externalFetcher){var parsed=fluid.extractELWithContext(string,options);if(parsed){if(parsed.context){return env[parsed.context]?fluid.transformContextPath(parsed,env).path:{value:externalFetcher(parsed)}}else{return parsed.path}}};fluid.transformContextPath=function(parsed,env){if(parsed.context){var fetched=env[parsed.context];var EL;if(typeof fetched==="string"){EL=fluid.extractEL(fetched,{ELstyle:"${}"})}if(EL){return{noDereference:parsed.path==="",path:fluid.model.composePath(EL,parsed.path)}}}return parsed};fluid.renderer.makeExternalFetcher=function(contextThat){return function(parsed){var foundComponent=fluid.resolveContext(parsed.context,contextThat);return foundComponent?fluid.getForComponent(foundComponent,parsed.path):undefined}};fluid.renderer.makeProtoExpander=function(expandOptions,parentThat){var options=$.extend({ELstyle:"${}"},expandOptions);if(parentThat){options.externalFetcher=fluid.renderer.makeExternalFetcher(parentThat)}var threadLocal;function fetchEL(string){var env=threadLocal();return fluid.extractContextualPath(string,options,env,options.externalFetcher)}var IDescape=options.IDescape||"\\";var expandLight=function(source){return fluid.expand(source,options)};var expandBound=function(value,concrete){if(value.messagekey!==undefined){return{componentType:"UIMessage",messagekey:expandBound(value.messagekey),args:expandLight(value.args)}}var proto;if(!fluid.isPrimitive(value)&&!fluid.isArrayable(value)){proto=$.extend({},value);if(proto.decorators){proto.decorators=expandLight(proto.decorators)}value=proto.value;delete proto.value}else{proto={}}var EL;if(typeof value==="string"){var fetched=fetchEL(value);EL=typeof fetched==="string"?fetched:null;value=fluid.get(fetched,"value")||value}if(EL){proto.valuebinding=EL}else if(value!==undefined){proto.value=value}if(options.model&&proto.valuebinding&&proto.value===undefined){proto.value=fluid.get(options.model,proto.valuebinding,options.resolverGetConfig)}if(concrete){proto.componentType="UIBound"}return proto};options.filter=fluid.expander.lightFilter;var expandCond;var expandLeafOrCond;var expandEntry=function(entry){var comp=[];expandCond(entry,comp);return{children:comp}};var expandExternal=function(entry){if(entry===fluid.renderer.NO_COMPONENT){return entry}var singleTarget;var target=[];var pusher=function(comp){singleTarget=comp};expandLeafOrCond(entry,target,pusher);return singleTarget||target};var expandConfig={model:options.model,resolverGetConfig:options.resolverGetConfig,resolverSetConfig:options.resolverSetConfig,expander:expandExternal,expandLight:expandLight};var expandLeaf=function(leaf,componentType){var togo={componentType:componentType};var map=fluid.renderer.boundMap[componentType]||{};for(var key in leaf){if(/decorators|args/.test(key)){togo[key]=expandLight(leaf[key]);continue}else if(map[key]){togo[key]=expandBound(leaf[key])}else{togo[key]=leaf[key]}}return togo};var expandChildren=function(entry,pusher){var children=entry.children;for(var i=0;i<children.length;++i){var target=[];var comp={children:target};var child=children[i];var childPusher=function(comp){target[target.length]=comp};expandLeafOrCond(child,target,childPusher);if(comp.children.length===1&&!comp.children[0].ID){comp=comp.children[0]}pusher(comp)}};function detectBareBound(entry){return fluid.find(entry,(function(value,key){return key==="decorators"}))!==false}expandLeafOrCond=function(entry,target,pusher){var componentType=fluid.renderer.inferComponentType(entry);if(!componentType&&(fluid.isPrimitive(entry)||detectBareBound(entry))){componentType="UIBound"}if(componentType){pusher(componentType==="UIBound"?expandBound(entry,true):expandLeaf(entry,componentType))}else{if(!target){fluid.fail("Illegal cond->cond transition")}expandCond(entry,target)}};expandCond=function(proto,target){var key;var expandToTarget=function(expander){var expanded=fluid.invokeGlobalFunction(expander.type,[expander,proto,key,expandConfig]);if(expanded!==fluid.renderer.NO_COMPONENT){fluid.each(expanded,(function(el){target[target.length]=el}))}};var condPusher=function(comp){comp.ID=key;target[target.length]=comp};for(key in proto){var entry=proto[key];if(key.charAt(0)===IDescape){key=key.substring(1)}if(key==="expander"){var expanders=fluid.makeArray(entry);fluid.each(expanders,expandToTarget)}else if(entry){if(entry.children){if(key.indexOf(":")===-1){key=key+":"}expandChildren(entry,condPusher)}else if(fluid.renderer.isBoundPrimitive(entry)){condPusher(expandBound(entry,true))}else{expandLeafOrCond(entry,null,condPusher)}}}};return function(entry){threadLocal=fluid.threadLocal((function(){return $.extend({},options.envAdd)}));options.fetcher=fluid.makeEnvironmentFetcher(options.model,fluid.transformContextPath,threadLocal,options.externalFetcher);expandConfig.threadLocal=threadLocal;return expandEntry(entry)}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.slidingPanel",{gradeNames:["fluid.viewComponent"],selectors:{panel:".flc-slidingPanel-panel",toggleButton:".flc-slidingPanel-toggleButton",toggleButtonLabel:".flc-slidingPanel-toggleButton"},strings:{showText:"show",hideText:"hide",panelLabel:"panel"},events:{onPanelHide:null,onPanelShow:null,afterPanelHide:null,afterPanelShow:null},listeners:{"onCreate.bindClick":{this:"{that}.dom.toggleButton",method:"on",args:["click","{that}.togglePanel"]},"onCreate.bindModelChange":{listener:"{that}.applier.modelChanged.addListener",args:["isShowing","{that}.refreshView"]},"onCreate.setAriaProps":"{that}.setAriaProps","onCreate.setInitialState":{listener:"{that}.refreshView"},"onPanelHide.setText":{this:"{that}.dom.toggleButtonLabel",method:"text",args:["{that}.options.strings.showText"],priority:"first"},"onPanelHide.setAriaLabel":{this:"{that}.dom.toggleButtonLabel",method:"attr",args:["aria-label","{that}.options.strings.showTextAriaLabel"]},"onPanelShow.setText":{this:"{that}.dom.toggleButtonLabel",method:"text",args:["{that}.options.strings.hideText"],priority:"first"},"onPanelShow.setAriaLabel":{this:"{that}.dom.toggleButtonLabel",method:"attr",args:["aria-label","{that}.options.strings.hideTextAriaLabel"]},"onPanelHide.operate":{listener:"{that}.operateHide"},"onPanelShow.operate":{listener:"{that}.operateShow"},"onCreate.setAriaStates":"{that}.setAriaStates"},members:{panelId:{expander:{funcName:"fluid.allocateSimpleId",args:"{that}.dom.panel"}}},model:{isShowing:false},modelListeners:{isShowing:{funcName:"{that}.setAriaStates",excludeSource:"init"}},invokers:{operateHide:{this:"{that}.dom.panel",method:"slideUp",args:["{that}.options.animationDurations.hide","{that}.events.afterPanelHide.fire"]},operateShow:{this:"{that}.dom.panel",method:"slideDown",args:["{that}.options.animationDurations.show","{that}.events.afterPanelShow.fire"]},hidePanel:{func:"{that}.applier.change",args:["isShowing",false]},showPanel:{func:"{that}.applier.change",args:["isShowing",true]},setAriaStates:{funcName:"fluid.slidingPanel.setAriaStates",args:["{that}","{that}.model.isShowing"]},setAriaProps:{funcName:"fluid.slidingPanel.setAriaProperties",args:["{that}","{that}.panelId"]},togglePanel:{funcName:"fluid.slidingPanel.togglePanel",args:["{that}"]},refreshView:{funcName:"fluid.slidingPanel.refreshView",args:["{that}"]}},animationDurations:{hide:400,show:400}});fluid.slidingPanel.togglePanel=function(that){that.applier.change("isShowing",!that.model.isShowing)};fluid.slidingPanel.refreshView=function(that){that.events[that.model.isShowing?"onPanelShow":"onPanelHide"].fire()};fluid.slidingPanel.setAriaProperties=function(that,panelId){that.locate("toggleButton").attr({role:"button","aria-controls":panelId});that.locate("panel").attr({"aria-label":that.options.strings.panelLabel,role:"group"})};fluid.slidingPanel.setAriaStates=function(that,isShowing){that.locate("toggleButton").attr({"aria-pressed":isShowing,"aria-expanded":isShowing})}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.textfield",{gradeNames:["fluid.viewComponent"],attrs:{},strings:{},modelListeners:{value:{this:"{that}.container",method:"val",args:["{change}.value"]}},listeners:{"onCreate.bindChangeEvt":{this:"{that}.container",method:"on",args:["change","{that}.setModel"]},"onCreate.initTextfieldAttributes":{this:"{that}.container",method:"attr",args:["{that}.options.attrs"]}},invokers:{setModel:{changePath:"value",value:"{arguments}.0.target.value"}}});fluid.textfield.setModelRestrictToNumbers=function(that,value,path){var isNumber=!isNaN(Number(value));if(isNumber){that.applier.change(path,value)}that.container.val(that.model.value)};fluid.defaults("fluid.textfield.rangeController",{gradeNames:["fluid.textfield"],components:{controller:{type:"fluid.modelComponent",options:{model:{value:null},modelRelay:[{source:"value",target:"{fluid.textfield}.model.value",singleTransform:{type:"fluid.transforms.numberToString",scale:"{that}.options.scale"}},{target:"value",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.value",min:"{that}.model.range.min",max:"{that}.model.range.max"}}]}}},invokers:{setModel:{funcName:"fluid.textfield.setModelRestrictToNumbers",args:["{that}","{arguments}.0.target.value","value"]}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.textfieldSlider",{gradeNames:["fluid.viewComponent"],components:{textfield:{type:"fluid.textfield.rangeController",container:"{that}.dom.textfield",options:{components:{controller:{options:{model:"{textfieldSlider}.model"}}},attrs:"{textfieldSlider}.options.attrs",strings:"{textfieldSlider}.options.strings"}},slider:{type:"fluid.slider",container:"{textfieldSlider}.dom.slider",options:{model:"{textfieldSlider}.model",attrs:"{textfieldSlider}.options.attrs",strings:"{textfieldSlider}.options.strings"}}},selectors:{textfield:".flc-textfieldSlider-field",slider:".flc-textfieldSlider-slider"},styles:{container:"fl-textfieldSlider fl-focus"},model:{value:null,step:1,range:{min:0,max:100}},modelRelay:{target:"value",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.value",min:"{that}.options.range.min",max:"{that}.options.range.max"}},attrs:{},strings:{},listeners:{"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]}},distributeOptions:[{source:"{that}.options.scale",target:"{that > fluid.textfield > controller}.options.scale"}]});fluid.defaults("fluid.slider",{gradeNames:["fluid.viewComponent"],modelRelay:{target:"value",singleTransform:{type:"fluid.transforms.stringToNumber",input:"{that}.model.stringValue"}},invokers:{setModel:{changePath:"stringValue",value:{expander:{this:"{that}.container",method:"val"}}},updateSliderAttributes:{this:"{that}.container",method:"attr",args:[{min:"{that}.model.range.min",max:"{that}.model.range.max",step:"{that}.model.step",type:"range",value:"{that}.model.value","aria-labelledby":"{that}.options.attrs.aria-labelledby","aria-label":"{that}.options.attrs.aria-label"}]}},listeners:{"onCreate.initSliderAttributes":"{that}.updateSliderAttributes","onCreate.bindSlideEvt":{this:"{that}.container",method:"on",args:["input","{that}.setModel"]},"onCreate.bindRangeChangeEvt":{this:"{that}.container",method:"on",args:["change","{that}.setModel"]}},modelListeners:{value:[{this:"{that}.container",method:"val",args:["{change}.value"],excludeSource:"init"}],range:{listener:"{that}.updateSliderAttributes",excludeSource:"init"},step:{listener:"{that}.updateSliderAttributes",excludeSource:"init"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.textfieldStepper",{gradeNames:["fluid.viewComponent"],strings:{increaseLabel:"increment",decreaseLabel:"decrement"},selectors:{textfield:".flc-textfieldStepper-field",focusContainer:".flc-textfieldStepper-focusContainer",increaseButton:".flc-textfieldStepper-increase",decreaseButton:".flc-textfieldStepper-decrease"},styles:{container:"fl-textfieldStepper",focus:"fl-textfieldStepper-focus"},components:{textfield:{type:"fluid.textfield.rangeController",container:"{that}.dom.textfield",options:{components:{controller:{options:{model:"{textfieldStepper}.model",modelListeners:{"range.min":{this:"{textfield}.container",method:"attr",args:["min","{change}.value"]},"range.max":{this:"{textfield}.container",method:"attr",args:["max","{change}.value"]},step:{this:"{textfield}.container",method:"attr",args:["step","{change}.value"]}}}}},attrs:"{textfieldStepper}.options.attrs",strings:"{textfieldStepper}.options.strings"}},increaseButton:{type:"fluid.textfieldStepper.button",container:"{textfieldStepper}.dom.increaseButton",options:{strings:{label:"{textfieldStepper}.options.strings.increaseLabel"},listeners:{"onClick.increase":"{textfieldStepper}.increase"},modelRelay:{target:"disabled",singleTransform:{type:"fluid.transforms.binaryOp",left:"{textfieldStepper}.model.value",right:"{textfieldStepper}.model.range.max",operator:">="}}}},decreaseButton:{type:"fluid.textfieldStepper.button",container:"{textfieldStepper}.dom.decreaseButton",options:{strings:{label:"{textfieldStepper}.options.strings.decreaseLabel"},listeners:{"onClick.decrease":"{textfieldStepper}.decrease"},modelRelay:{target:"disabled",singleTransform:{type:"fluid.transforms.binaryOp",left:"{textfieldStepper}.model.value",right:"{textfieldStepper}.model.range.min",operator:"<="}}}}},invokers:{increase:{funcName:"fluid.textfieldStepper.step",args:["{that}"]},decrease:{funcName:"fluid.textfieldStepper.step",args:["{that}",-1]},addFocus:{this:"{that}.dom.focusContainer",method:"addClass",args:["{that}.options.styles.focus"]},removeFocus:{this:"{that}.dom.focusContainer",method:"removeClass",args:["{that}.options.styles.focus"]}},listeners:{"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]},"onCreate.bindFocusin":{this:"{that}.container",method:"on",args:["focusin","{that}.addFocus"]},"onCreate.bindFocusout":{this:"{that}.container",method:"on",args:["focusout","{that}.removeFocus"]}},model:{value:null,step:1,range:{min:0,max:100}},attrs:{},distributeOptions:[{source:"{that}.options.scale",target:"{that > fluid.textfield > controller}.options.scale"}]});fluid.textfieldStepper.step=function(that,coefficient){coefficient=coefficient||1;var newValue=that.model.value+coefficient*that.model.step;that.applier.change("value",newValue)};fluid.defaults("fluid.textfieldStepper.button",{gradeNames:["fluid.viewComponent"],strings:{},styles:{container:"fl-textfieldStepper-button"},model:{disabled:false},events:{onClick:null},listeners:{"onCreate.bindClick":{this:"{that}.container",method:"on",args:["click","{that}.events.onClick.fire"]},"onCreate.addLabel":{this:"{that}.container",method:"attr",args:["aria-label","{that}.options.strings.label"]},"onCreate.addContainerStyle":{this:"{that}.container",method:"addClass",args:["{that}.options.styles.container"]},"onCreate.removeFromTabOrder":{this:"{that}.container",method:"attr",args:["tabindex","-1"]}},modelListeners:{disabled:{this:"{that}.container",method:"prop",args:["disabled","{change}.value"]}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.switchUI",{gradeNames:["fluid.viewComponent"],selectors:{on:".flc-switchUI-on",off:".flc-switchUI-off",control:".flc-switchUI-control"},strings:{label:"",on:"on",off:"off"},attrs:{role:"switch"},model:{enabled:false},modelListeners:{enabled:{this:"{that}.dom.control",method:"attr",args:["aria-checked","{change}.value"]}},listeners:{"onCreate.addAttrs":{this:"{that}.dom.control",method:"attr",args:["{that}.options.attrs"]},"onCreate.addOnText":{this:"{that}.dom.on",method:"text",args:["{that}.options.strings.on"]},"onCreate.addOffText":{this:"{that}.dom.off",method:"text",args:["{that}.options.strings.off"]},"onCreate.bindClick":{this:"{that}.dom.control",method:"on",args:["click","{that}.toggleModel"]}},invokers:{toggleModel:{funcName:"fluid.switchUI.toggleModel",args:["{that}"]}}});fluid.switchUI.toggleModel=function(that){that.applier.change("enabled",!that.model.enabled)}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.tableOfContents");fluid.tableOfContents.headingTextToAnchorInfo=function(heading){var id=fluid.allocateSimpleId(heading);var anchorInfo={id:id,url:"#"+id};return anchorInfo};fluid.tableOfContents.locateHeadings=function(that){var headings=that.locate("headings");fluid.each(that.options.ignoreForToC,(function(sel){headings=headings.not(sel).not(sel+" :header")}));return headings};fluid.tableOfContents.refreshView=function(that){var headings=that.locateHeadings();that.anchorInfo=fluid.transform(headings,(function(heading){return that.headingTextToAnchorInfo(heading)}));var headingsModel=that.modelBuilder.assembleModel(headings,that.anchorInfo);that.applier.change("",headingsModel);that.events.onRefresh.fire()};fluid.defaults("fluid.tableOfContents",{gradeNames:["fluid.viewComponent"],components:{levels:{type:"fluid.tableOfContents.levels",createOnEvent:"onCreate",container:"{tableOfContents}.dom.tocContainer",options:{model:{headings:"{tableOfContents}.model"},events:{afterRender:"{tableOfContents}.events.afterRender"},listeners:{"{tableOfContents}.events.onRefresh":"{that}.refreshView"},strings:"{tableOfContents}.options.strings"}},modelBuilder:{type:"fluid.tableOfContents.modelBuilder"}},model:[],invokers:{headingTextToAnchorInfo:"fluid.tableOfContents.headingTextToAnchorInfo",locateHeadings:{funcName:"fluid.tableOfContents.locateHeadings",args:["{that}"]},refreshView:{funcName:"fluid.tableOfContents.refreshView",args:["{that}"]},hide:{this:"{that}.dom.tocContainer",method:"hide"},show:{this:"{that}.dom.tocContainer",method:"show"}},strings:{tocHeader:"Table of Contents"},selectors:{headings:":header:visible",tocContainer:".flc-toc-tocContainer"},ignoreForToC:{tocContainer:"{that}.options.selectors.tocContainer"},events:{onRefresh:null,afterRender:null,onReady:{events:{onCreate:"onCreate",afterRender:"afterRender"},args:["{that}"]}},listeners:{"onCreate.refreshView":"{that}.refreshView"}});fluid.registerNamespace("fluid.tableOfContents.modelBuilder");fluid.tableOfContents.modelBuilder.toModel=function(headingInfo,modelLevelFn){var headings=fluid.copy(headingInfo);var buildModelLevel=function(headings,level){var modelLevel=[];while(headings.length>0){var heading=headings[0];if(heading.level<level){break}if(heading.level>level){var subHeadings=buildModelLevel(headings,level+1);if(modelLevel.length>0){modelLevel[modelLevel.length-1].headings=subHeadings}else{modelLevel=modelLevelFn(modelLevel,subHeadings)}}if(heading.level===level){modelLevel.push(heading);headings.shift()}}return modelLevel};return buildModelLevel(headings,1)};fluid.tableOfContents.modelBuilder.gradualModelLevelFn=function(modelLevel,subHeadings){var subHeadingsClone=fluid.copy(subHeadings);subHeadingsClone[0].level--;return subHeadingsClone};fluid.tableOfContents.modelBuilder.skippedModelLevelFn=function(modelLevel,subHeadings){modelLevel.push({headings:subHeadings});return modelLevel};fluid.tableOfContents.modelBuilder.convertToHeadingObjects=function(that,headings,anchorInfo){headings=$(headings);return fluid.transform(headings,(function(heading,index){return{level:that.headingCalculator.getHeadingLevel(heading),text:$(heading).text(),url:anchorInfo[index].url}}))};fluid.tableOfContents.modelBuilder.assembleModel=function(that,headings,anchorInfo){var headingInfo=that.convertToHeadingObjects(headings,anchorInfo);return that.toModel(headingInfo)};fluid.defaults("fluid.tableOfContents.modelBuilder",{gradeNames:["fluid.component"],components:{headingCalculator:{type:"fluid.tableOfContents.modelBuilder.headingCalculator"}},invokers:{toModel:{funcName:"fluid.tableOfContents.modelBuilder.toModel",args:["{arguments}.0","{modelBuilder}.modelLevelFn"]},modelLevelFn:"fluid.tableOfContents.modelBuilder.gradualModelLevelFn",convertToHeadingObjects:"fluid.tableOfContents.modelBuilder.convertToHeadingObjects({that}, {arguments}.0, {arguments}.1)",assembleModel:"fluid.tableOfContents.modelBuilder.assembleModel({that}, {arguments}.0, {arguments}.1)"}});fluid.registerNamespace("fluid.tableOfContents.modelBuilder.headingCalculator");fluid.tableOfContents.modelBuilder.headingCalculator.getHeadingLevel=function(that,heading){return that.options.levels.indexOf(heading.tagName)+1};fluid.defaults("fluid.tableOfContents.modelBuilder.headingCalculator",{gradeNames:["fluid.component"],invokers:{getHeadingLevel:"fluid.tableOfContents.modelBuilder.headingCalculator.getHeadingLevel({that}, {arguments}.0)"},levels:["H1","H2","H3","H4","H5","H6"]});fluid.registerNamespace("fluid.tableOfContents.levels");fluid.tableOfContents.levels.objModel=function(type,ID){var objModel={ID:type+ID+":",children:[]};return objModel};fluid.tableOfContents.levels.handleEmptyItemObj=function(itemObj){itemObj.decorators=[{type:"addClass",classes:"fl-tableOfContents-hide-bullet"}]};fluid.tableOfContents.levels.generateTree=function(headingsModel,currentLevel){currentLevel=currentLevel||0;var levelObj=fluid.tableOfContents.levels.objModel("level",currentLevel);if(headingsModel.headings.length===0){return currentLevel?[]:{children:[]}}if(currentLevel===0){var tree={children:[fluid.tableOfContents.levels.generateTree(headingsModel,currentLevel+1)]};return tree}$.each(headingsModel.headings,(function(index,model){var itemObj=fluid.tableOfContents.levels.objModel("items",currentLevel);var linkObj={ID:"link"+currentLevel,target:model.url,linktext:model.text};if(!model.level){fluid.tableOfContents.levels.handleEmptyItemObj(itemObj)}else{itemObj.children.push(linkObj)}if(model.headings){itemObj.children.push(fluid.tableOfContents.levels.generateTree(model,currentLevel+1))}levelObj.children.push(itemObj)}));return levelObj};fluid.tableOfContents.levels.produceTree=function(that){var tree=fluid.tableOfContents.levels.generateTree(that.model);tree.children.push({ID:"tocHeader",messagekey:"tocHeader"});return tree};fluid.tableOfContents.levels.fetchResources=function(that){fluid.fetchResources(that.options.resources,(function(){that.container.append(that.options.resources.template.resourceText);that.refreshView()}))};fluid.defaults("fluid.tableOfContents.levels",{gradeNames:["fluid.rendererComponent"],produceTree:"fluid.tableOfContents.levels.produceTree",strings:{tocHeader:"Table of Contents"},selectors:{tocHeader:".flc-toc-header",level1:".flc-toc-levels-level1",level2:".flc-toc-levels-level2",level3:".flc-toc-levels-level3",level4:".flc-toc-levels-level4",level5:".flc-toc-levels-level5",level6:".flc-toc-levels-level6",items1:".flc-toc-levels-items1",items2:".flc-toc-levels-items2",items3:".flc-toc-levels-items3",items4:".flc-toc-levels-items4",items5:".flc-toc-levels-items5",items6:".flc-toc-levels-items6",link1:".flc-toc-levels-link1",link2:".flc-toc-levels-link2",link3:".flc-toc-levels-link3",link4:".flc-toc-levels-link4",link5:".flc-toc-levels-link5",link6:".flc-toc-levels-link6"},repeatingSelectors:["level1","level2","level3","level4","level5","level6","items1","items2","items3","items4","items5","items6"],model:{headings:[]},listeners:{"onCreate.fetchResources":"fluid.tableOfContents.levels.fetchResources"},resources:{template:{forceCache:true,url:"../html/TableOfContents.html"}},rendererFnOptions:{noexpand:true},rendererOptions:{debugMode:false}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.window",{gradeNames:["fluid.component","fluid.resolveRootSingle"],singleRootType:"fluid.window",members:{window:window},listeners:{"onCreate.bindEvents":{funcName:"fluid.window.bindEvents",args:["{that}"]}}});fluid.window.bindEvents=function(that){fluid.each(that.options.events,(function(type,eventName){window.addEventListener(eventName,that.events[eventName].fire)}))};fluid.registerNamespace("fluid.textToSpeech");fluid.textToSpeech.isSupported=function(){return!!(window&&window.speechSynthesis)};fluid.defaults("fluid.textToSpeech",{gradeNames:["fluid.modelComponent","fluid.resolveRootSingle"],singleRootType:"fluid.textToSpeech",events:{onStart:null,onStop:null,onError:null,onSpeechQueued:null,utteranceOnBoundary:null,utteranceOnEnd:null,utteranceOnError:null,utteranceOnMark:null,utteranceOnPause:null,utteranceOnResume:null,utteranceOnStart:null},members:{queue:[]},components:{wndw:{type:"fluid.window",options:{events:{beforeunload:null}}}},dynamicComponents:{utterance:{type:"fluid.textToSpeech.utterance",createOnEvent:"onSpeechQueued",options:{listeners:{"onBoundary.relay":"{textToSpeech}.events.utteranceOnBoundary.fire","onEnd.relay":{listener:"{textToSpeech}.events.utteranceOnEnd.fire",priority:"before:resolvePromise"},"onError.relay":{listener:"{textToSpeech}.events.utteranceOnError.fire",priority:"before:rejectPromise"},"onError.destroy":{listener:"{that}.destroy",priority:"after:rejectPromise"},"onMark.relay":"{textToSpeech}.events.utteranceOnMark.fire","onPause.relay":"{textToSpeech}.events.utteranceOnPause.fire","onResume.relay":"{textToSpeech}.events.utteranceOnResume.fire","onStart.relay":"{textToSpeech}.events.utteranceOnStart.fire","onCreate.followPromise":{funcName:"fluid.promise.follow",args:["{that}.promise","{that}.options.onSpeechQueuePromise"]},"onCreate.queue":{this:"{fluid.textToSpeech}.queue",method:"push",args:["{that}"],priority:"after:followPromise"},"onCreate.speak":{listener:"{textToSpeech}.speak",args:["{that}.utterance"],priority:"after:queue"},"onEnd.destroy":{func:"{that}.destroy",priority:"last"}},onSpeechQueuePromise:"{arguments}.2",utterance:"{arguments}.0"}}},model:{utteranceOpts:{}},modelListeners:{speaking:{listener:"fluid.textToSpeech.toggleSpeak",args:["{that}","{change}.value"]},pauseRequested:{listener:"fluid.textToSpeech.requestControl",args:["{that}","pause","{change}"]},resumeRequested:{listener:"fluid.textToSpeech.requestControl",args:["{that}","resume","{change}"]}},invokers:{queueSpeech:{funcName:"fluid.textToSpeech.queueSpeech",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},queueSpeechSequence:{funcName:"fluid.textToSpeech.queueSpeechSequence",args:["{that}","{arguments}.0","{arguments}.1"]},cancel:{funcName:"fluid.textToSpeech.cancel",args:["{that}"]},pause:{changePath:"pauseRequested",value:true,source:"pause"},resume:{changePath:"resumeRequested",value:true,source:"resume"},getVoices:{func:"{that}.invokeSpeechSynthesisFunc",args:["getVoices"]},speak:{func:"{that}.invokeSpeechSynthesisFunc",args:["speak","{arguments}.0"]},invokeSpeechSynthesisFunc:"fluid.textToSpeech.invokeSpeechSynthesisFunc"},listeners:{"utteranceOnStart.speaking":{changePath:"speaking",value:true,source:"utteranceOnStart"},"utteranceOnEnd.stop":{funcName:"fluid.textToSpeech.handleEnd",args:["{that}"]},"onError.stop":{funcName:"fluid.textToSpeech.handleEnd",args:["{that}"]},"utteranceOnError.forward":"{that}.events.onError","utteranceOnPause.pause":{changePath:"paused",value:true,source:"utteranceOnPause"},"utteranceOnResume.resume":{changePath:"paused",value:false,source:"utteranceOnResume"},"onDestroy.cleanup":{func:"{that}.invokeSpeechSynthesisFunc",args:["cancel"]},"{wndw}.events.beforeunload":{funcName:"{that}.invokeSpeechSynthesisFunc",args:["cancel"],namespace:"cancelSpeechSynthesisOnUnload"}}});fluid.textToSpeech.invokeSpeechSynthesisFunc=function(method,args){args=fluid.makeArray(args);speechSynthesis[method].apply(speechSynthesis,args)};fluid.textToSpeech.toggleSpeak=function(that,speaking){that.events[speaking?"onStart":"onStop"].fire()};fluid.textToSpeech.requestControl=function(that,control,change){if(change.value){that.applier.change(change.path,false,"ADD","requestControl");that.invokeSpeechSynthesisFunc(control)}};fluid.textToSpeech.handleEnd=function(that){that.queue.shift();var resetValues={speaking:false,pending:false,paused:false};if(that.queue.length){that.applier.change("pending",true,"ADD","handleEnd.pending")}else if(!that.queue.length){var newModel=$.extend({},that.model,resetValues);that.applier.change("",newModel,"ADD","handleEnd.reset")}};fluid.textToSpeech.queueSpeech=function(that,text,interrupt,options){var promise=fluid.promise();if(interrupt){that.cancel()}var utteranceOpts=$.extend({},that.model.utteranceOpts,options,{text:text});setTimeout((function(){that.events.onSpeechQueued.fire(utteranceOpts,interrupt,promise)}),100);return promise};fluid.textToSpeech.queueSpeechSequence=function(that,speeches,interrupt){var sequence=fluid.transform(speeches,(function(speech,index){var toInterrupt=interrupt&&!index;return that.queueSpeech(speech.text,toInterrupt,speech.options)}));return fluid.promise.sequence(sequence)};fluid.textToSpeech.cancel=function(that){while(that.queue.length){var utterance=that.queue[0];utterance.events.onEnd.fire()}that.invokeSpeechSynthesisFunc("cancel");that.invokeSpeechSynthesisFunc("resume")};fluid.defaults("fluid.textToSpeech.utterance",{gradeNames:["fluid.modelComponent"],members:{utterance:{expander:{funcName:"fluid.textToSpeech.utterance.construct",args:["{that}","{that}.options.utteranceEventMap","{that}.options.utterance"]}},promise:{expander:{funcName:"fluid.promise"}}},model:{boundary:0},utterance:{},utteranceEventMap:{onboundary:"onBoundary",onend:"onEnd",onerror:"onError",onmark:"onMark",onpause:"onPause",onresume:"onResume",onstart:"onStart"},events:{onBoundary:null,onEnd:null,onError:null,onMark:null,onPause:null,onResume:null,onStart:null},listeners:{"onBoundary.updateModel":{changePath:"boundary",value:"{arguments}.0.charIndex"},"onEnd.resolvePromise":"{that}.promise.resolve","onError.rejectPromise":"{that}.promise.reject"}});fluid.textToSpeech.utterance.construct=function(that,utteranceEventMap,utteranceOpts){var utterance=new SpeechSynthesisUtterance;$.extend(utterance,utteranceOpts);fluid.each(utteranceEventMap,(function(compEventName,utteranceEvent){var compEvent=that.events[compEventName];var origHandler=utteranceOpts[utteranceEvent];utterance[utteranceEvent]=compEvent.fire;if(origHandler){compEvent.addListener(origHandler,"external")}}));return utterance}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.orator",{gradeNames:["fluid.viewComponent"],selectors:{controller:".flc-orator-controller",content:".flc-orator-content"},model:{enabled:true,play:false},components:{tts:{type:"fluid.textToSpeech"},controller:{type:"fluid.orator.controller",options:{parentContainer:"{orator}.container",model:{playing:"{orator}.model.play",enabled:"{orator}.model.enabled"}}},selectionReader:{type:"fluid.orator.selectionReader",container:"{that}.container",options:{model:{enabled:"{orator}.model.enabled"}}},domReader:{type:"fluid.orator.domReader",container:"{that}.dom.content",options:{model:{tts:{enabled:"{orator}.model.enabled"}},listeners:{"onStop.domReaderStop":{changePath:"{orator}.model.play",value:false,source:"domReader.onStop",priority:"after:removeHighlight"}},modelListeners:{"{orator}.model.play":{funcName:"fluid.orator.handlePlayToggle",args:["{that}","{change}.value"],namespace:"domReader.handlePlayToggle"}}}}},modelListeners:{enabled:{listener:"fluid.orator.cancelWhenDisabled",args:["{tts}.cancel","{change}.value"],namespace:"orator.clearSpeech"}},distributeOptions:[{source:"{that}.options.tts",target:"{that tts}.options",removeSource:true,namespace:"ttsOpts"},{source:"{that}.options.controller",target:"{that controller}.options",removeSource:true,namespace:"controllerOpts"},{source:"{that}.options.domReader",target:"{that domReader}.options",removeSource:true,namespace:"domReaderOpts"},{source:"{that}.options.selectionReader",target:"{that selectionReader}.options",removeSource:true,namespace:"selectionReaderOpts"}]});fluid.orator.cancelWhenDisabled=function(cancelFn,state){if(!state){cancelFn()}};fluid.orator.handlePlayToggle=function(that,state){if(state){that.play()}else{that.pause()}};fluid.defaults("fluid.orator.controller",{gradeNames:["fluid.containerRenderingView"],selectors:{playToggle:".flc-orator-controller-playToggle"},styles:{play:"fl-orator-controller-play"},strings:{play:"play",pause:"pause"},model:{playing:false,enabled:true},injectionType:"prepend",markup:{container:'<div class="flc-orator-controller fl-orator-controller">'+'<div class="fl-icon-orator" aria-hidden="true"></div>'+'<button type="button" class="flc-orator-controller-playToggle">'+'<span class="fl-orator-controller-playToggle fl-icon-orator-playToggle" aria-hidden="true"></span>'+"</button></div>"},invokers:{play:{changePath:"playing",value:true,source:"play"},pause:{changePath:"playing",value:false,source:"pause"},toggle:{funcName:"fluid.orator.controller.toggleState",args:["{that}","{arguments}.0","{arguments}.1"]}},listeners:{"onCreate.bindClick":{listener:"fluid.orator.controller.bindClick",args:["{that}"]}},modelListeners:{playing:{listener:"fluid.orator.controller.setToggleView",args:["{that}","{change}.value"]},enabled:{this:"{that}.container",method:"toggle",args:["{change}.value"],namespace:"toggleView"}}});fluid.orator.controller.bindClick=function(that){that.locate("playToggle").on("click",(function(){that.toggle("playing")}))};fluid.orator.controller.toggleState=function(that,path,state){var newState=fluid.isValue(state)?state:!fluid.get(that.model,path);that.applier.change(path,!!newState,"ADD","toggleState")};fluid.orator.controller.setToggleView=function(that,state){var playToggle=that.locate("playToggle");playToggle.toggleClass(that.options.styles.play,state);playToggle.attr({"aria-label":that.options.strings[state?"pause":"play"]})};fluid.defaults("fluid.orator.domReader",{gradeNames:["fluid.viewComponent"],selectors:{highlight:".flc-orator-highlight"},markup:{highlight:'<mark class="flc-orator-highlight fl-orator-highlight"></mark>'},events:{onQueueSpeech:null,onReadFromDOM:null,utteranceOnEnd:null,utteranceOnBoundary:null,utteranceOnError:null,utteranceOnMark:null,utteranceOnPause:null,utteranceOnResume:null,utteranceOnStart:null,onStop:null,onError:null},utteranceEventMap:{onboundary:"utteranceOnBoundary",onend:"utteranceOnEnd",onerror:"utteranceOnError",onmark:"utteranceOnMark",onpause:"utteranceOnPause",onresume:"utteranceOnResume",onstart:"utteranceOnStart"},model:{tts:{paused:false,speaking:false,enabled:true},parseQueueIndex:0,parseIndex:null,ttsBoundary:null,parseQueueCount:0,parseItemCount:0},modelRelay:[{target:"parseIndex",backward:"never",excludeSource:["utteranceOnPause"],namespace:"getClosestIndex",singleTransform:{type:"fluid.transforms.free",func:"fluid.orator.domReader.getClosestIndex",args:["{that}","{that}.model.ttsBoundary","{that}.model.parseQueueIndex"]}}],members:{parseQueue:[]},components:{parser:{type:"fluid.textNodeParser",options:{listeners:{"onParsedTextNode.addToParseQueue":"{domReader}.addToParseQueue"}}}},invokers:{parsedToString:"fluid.orator.domReader.parsedToString",readFromDOM:{funcName:"fluid.orator.domReader.readFromDOM",args:["{that}","{that}.container"]},removeHighlight:{funcName:"fluid.orator.domReader.unWrap",args:["{that}.dom.highlight"]},addToParseQueue:{funcName:"fluid.orator.domReader.addToParseQueue",args:["{that}","{arguments}.0"]},resetParseQueue:{funcName:"fluid.orator.domReader.resetParseQueue",args:["{that}"]},highlight:{funcName:"fluid.orator.domReader.highlight",args:["{that}"]},play:{funcName:"fluid.orator.domReader.play",args:["{that}","{fluid.textToSpeech}.resume"]},pause:{funcName:"fluid.orator.domReader.pause",args:["{that}","{fluid.textToSpeech}.pause"]},queueSpeech:{funcName:"fluid.orator.domReader.queueSpeech",args:["{that}","{arguments}.0","{arguments}.1"]},isWord:"fluid.textNodeParser.hasGlyph"},modelListeners:{parseIndex:{listener:"{that}.highlight",namespace:"highlight",excludeSource:["init","utteranceOnEnd","resetParseQueue"]}},listeners:{"onQueueSpeech.removeExtraWhiteSpace":"fluid.orator.domReader.removeExtraWhiteSpace","onQueueSpeech.queueSpeech":{func:"{fluid.textToSpeech}.queueSpeech",args:["{arguments}.0","{arguments}.1.interrupt","{arguments}.1"],priority:"after:removeExtraWhiteSpace"},"onError.stop":"{that}.events.onStop","onStop.resetParseQueue":{listener:"{that}.resetParseQueue"},"onStop.removeHighlight":{listener:"{that}.removeHighlight",priority:"after:resetParseQueue"},"onStop.updateTTSModel":{changePath:"tts",value:{speaking:false,paused:false},source:"onStop"},"utteranceOnEnd.resetParseIndex":{changePath:"",value:{parseIndex:null},source:"utteranceOnEnd"},"utteranceOnStart.updateTTSModel":{changePath:"tts",value:{speaking:true,paused:false},source:"utteranceOnStart"},"utteranceOnPause.updateTTSModel":{changePath:"tts",value:{speaking:true,paused:true},source:"utteranceOnPause"},"utteranceOnPause.resetBoundary":{changePath:"ttsBoundary",value:null,source:"utteranceOnPause"},"utteranceOnResume.updateTTSModel":{changePath:"tts",value:{speaking:true,paused:false},source:"utteranceOnResume"},"utteranceOnBoundary.setCurrentBoundary":{listener:"fluid.orator.domReader.setCurrentBoundary",args:["{that}","{arguments}.0.charIndex","{arguments}.0.name"]}}});fluid.orator.domReader.setCurrentBoundary=function(that,boundary,boundaryType){if(that.model.tts.paused||boundaryType!=="word"){return}var currentBoundary=fluid.isValue(that.model.ttsBoundary)?that.model.ttsBoundary:-1;var parseQueueIndex;if(currentBoundary<boundary){parseQueueIndex=that.model.parseQueueIndex}else{parseQueueIndex=that.model.parseQueueIndex+1}that.applier.change("",{ttsBoundary:boundary,parseQueueIndex:parseQueueIndex},"ADD","setCurrentBoundary")};fluid.orator.domReader.play=function(that,resumeFn){if(that.model.tts.enabled){if(that.model.tts.paused){resumeFn()}else if(!that.model.tts.speaking){that.readFromDOM()}}};fluid.orator.domReader.pause=function(that,pauseFn){if(that.model.tts.speaking&&!that.model.tts.paused){pauseFn()}};fluid.orator.domReader.mapUtteranceEvents=function(that,utterance,utteranceEventMap){fluid.each(utteranceEventMap,(function(compEventName,utteranceEvent){var compEvent=that.events[compEventName];utterance[utteranceEvent]=compEvent.fire}))};fluid.orator.domReader.removeExtraWhiteSpace=function(text){var promise=fluid.promise();var str=text.toString();str=str.trim();if(str){promise.resolve(str)}else{promise.reject("The text is empty")}return promise};fluid.orator.domReader.queueSpeech=function(that,text,options){options=options||{};fluid.orator.domReader.mapUtteranceEvents(that,options,that.options.utteranceEventMap);return fluid.promise.fireTransformEvent(that.events.onQueueSpeech,text,options)};fluid.orator.domReader.unWrap=function(elm){elm=$(elm);if(elm.length){var parent=elm.parent();elm.contents().unwrap();parent[0].normalize()}};fluid.orator.domReader.retrieveActiveQueue=function(that,lang){var lastQueue=that.parseQueue[that.parseQueue.length-1];if(!lastQueue||lastQueue.length&&lastQueue[0].lang!==lang){lastQueue=[];that.parseQueue.push(lastQueue);that.applier.change("parseQueueCount",that.parseQueue.length,"ADD","retrieveActiveQueue")}return lastQueue};fluid.orator.domReader.addToParseQueue=function(that,textNodeData){var activeQueue=fluid.orator.domReader.retrieveActiveQueue(that,textNodeData.lang);var lastParsed=activeQueue[activeQueue.length-1]||{};var words=textNodeData.node.textContent.split(/(\s+)/);var parsed=$.extend({},textNodeData,{blockIndex:(lastParsed.blockIndex||0)+(fluid.get(lastParsed,["word","length"])||0),startOffset:0,parentNode:textNodeData.node.parentNode});fluid.each(words,(function(word){var lastIsWord=that.isWord(lastParsed.word);var currentIsWord=that.isWord(word);if(lastIsWord&¤tIsWord){lastParsed.word+=word;lastParsed.endOffset+=word.length;parsed.blockIndex+=word.length;parsed.startOffset+=word.length}else{parsed.word=word;parsed.endOffset=parsed.startOffset+word.length;if(currentIsWord||word&&lastIsWord){lastParsed=fluid.copy(parsed);activeQueue.push(lastParsed);that.applier.change("parseItemCount",that.model.parseItemCount+1,"ADD","addToParseQueue");parsed.blockIndex+=word.length}parsed.startOffset=parsed.endOffset}}))};fluid.orator.domReader.resetParseQueue=function(that){that.parseQueue=[];that.applier.change("",{parseQueueIndex:0,parseIndex:null,ttsBoundary:null,parseQueueCount:0,parseItemCount:0},"ADD","resetParseQueue")};fluid.orator.domReader.parsedToString=function(parsed){var words=fluid.transform(parsed,(function(block){return block.word}));return words.join("")};fluid.orator.domReader.readFromDOM=function(that,elm){elm=$(elm);if(elm.length){that.resetParseQueue();that.parser.parse(elm[0]);var queueSpeechPromises=fluid.transform(that.parseQueue,(function(parsedBlock,index){var interrupt=!index;var text=that.parsedToString(parsedBlock);return that.queueSpeech(text,{lang:parsedBlock[0].lang,interrupt:interrupt})}));fluid.promise.sequence(queueSpeechPromises).then(that.events.onStop.fire,that.events.onError.fire)}};fluid.orator.domReader.getClosestIndex=function(that,boundary,parseQueueIndex){var parseQueue=that.parseQueue[parseQueueIndex];if(!fluid.get(parseQueue,"length")||!fluid.isValue(boundary)){return undefined}var maxIndex=Math.max(parseQueue.length-1,0);var index=Math.max(Math.min(that.model.parseIndex||0,maxIndex),0);var maxBoundary=parseQueue[maxIndex].blockIndex+parseQueue[maxIndex].word.length;if(boundary>maxBoundary||boundary<0){return undefined}while(index>=0){var nextIndex=index+1;var prevIndex=index-1;var currentBlockIndex=parseQueue[index].blockIndex;var nextBlockIndex=index<maxIndex?parseQueue[nextIndex].blockIndex:maxBoundary+1;if(boundary>=currentBlockIndex&&boundary<nextBlockIndex){break}if(currentBlockIndex>boundary){index=prevIndex}else{index=nextIndex}}return index};fluid.orator.domReader.findTextNode=function(node){if(!node){return}if(node.nodeType===Node.TEXT_NODE){return node}var children=node.childNodes;for(var i=0;i<children.length;i++){var textNode=fluid.orator.domReader.findTextNode(children[i]);if(textNode!==undefined){return textNode}}};fluid.orator.domReader.getTextNodeFromSibling=function(node){while(node.nextSibling){node=node.nextSibling;var textNode=fluid.orator.domReader.findTextNode(node);if(textNode){return textNode}}};fluid.orator.domReader.getNextTextNode=function(node){var nextTextNode=fluid.orator.domReader.getTextNodeFromSibling(node);if(nextTextNode){return nextTextNode}var parent=node.parentNode;if(parent){return fluid.orator.domReader.getNextTextNode(parent)}};fluid.orator.domReader.setRangeEnd=function(range,node,end){var ranges=fluid.makeArray(range);if(end<=node.length){range.setEnd(node,end)}else{var nextRange=document.createRange();var nextTextNode=fluid.orator.domReader.getNextTextNode(node);nextRange.selectNode(nextTextNode);nextRange.setStart(nextTextNode,0);ranges=ranges.concat(fluid.orator.domReader.setRangeEnd(nextRange,nextTextNode,end-node.length))}return ranges};fluid.orator.domReader.highlight=function(that){that.removeHighlight();if(that.model.parseQueueCount&&fluid.isValue(that.model.parseIndex)){var data=that.parseQueue[that.model.parseQueueIndex][that.model.parseIndex];var rangeNode=data.parentNode.childNodes[data.childIndex];var startRange=document.createRange();startRange.selectNode(rangeNode);startRange.setStart(rangeNode,data.startOffset);var ranges=fluid.orator.domReader.setRangeEnd(startRange,rangeNode,data.endOffset);fluid.each(ranges,(function(range){range.surroundContents($(that.options.markup.highlight)[0]);range.detach()}))}};fluid.defaults("fluid.orator.selectionReader",{gradeNames:["fluid.viewComponent"],selectors:{control:".flc-orator-selectionReader-control",controlLabel:".flc-orator-selectionReader-controlLabel"},strings:{play:"play",stop:"stop"},styles:{above:"fl-orator-selectionReader-above",below:"fl-orator-selectionReader-below",control:"fl-orator-selectionReader-control"},markup:{control:'<button type="button" class="flc-orator-selectionReader-control"><span class="fl-icon-orator"></span><span class="flc-orator-selectionReader-controlLabel"></span></button>'},model:{enabled:true,play:false,text:""},events:{onError:null,onSelectionChanged:null,onStop:null,onToggleControl:null},components:{parser:{type:"fluid.textNodeParser"}},listeners:{"onCreate.bindEvents":{funcName:"fluid.orator.selectionReader.bindSelectionEvents",args:["{that}"]},"onSelectionChanged.updateSelection":"{that}.setTextFromSelection","onStop.stop":{changePath:"play",value:false,source:"stopMethod"},"onError.stop":{changePath:"play",value:false,source:"onError"},"onToggleControl.togglePlay":"{that}.toggle"},modelListeners:{text:[{func:"{that}.stop",namespace:"stopPlayingWhenTextChanges"},{funcName:"fluid.orator.selectionReader.renderControl",args:["{that}","{change}.value"],namespace:"render"}],play:[{func:"fluid.orator.selectionReader.queueSpeech",args:["{that}","{change}.value","{fluid.textToSpeech}.queueSpeechSequence"],namespace:"queueSpeech"},{func:"fluid.orator.selectionReader.renderControlState",args:["{that}","{that}.control","{arguments}.0"],excludeSource:["init"],namespace:"renderControlState"}],enabled:{funcName:"fluid.orator.selectionReader.updateText",args:["{that}","{change}.value"],namespace:"updateText"}},invokers:{setTextFromSelection:{funcName:"fluid.orator.selectionReader.setTextFromSelection",args:["{that}","{that}.selectionFilter"]},play:{changePath:"play",value:true,source:"playMethod"},stop:{funcName:"fluid.orator.selectionReader.stopSpeech",args:["{that}.model.play","{fluid.textToSpeech}.cancel"]},toggle:{funcName:"fluid.orator.selectionReader.togglePlay",args:["{that}","{arguments}.0"]},selectionFilter:"fluid.textNodeParser.hasGlyph"}});fluid.orator.selectionReader.stopSpeech=function(state,cancelFn){if(state){cancelFn()}};fluid.orator.selectionReader.queueSpeech=function(that,state,speechFn){if(state&&that.model.enabled&&that.model.text){var parsed=fluid.orator.selectionReader.parseRange(that.selection.getRangeAt(0),that.parser.parse);var speechPromise=speechFn(parsed,true);speechPromise.then(that.events.onStop.fire,that.events.onError.fire)}};fluid.orator.selectionReader.bindSelectionEvents=function(that){$(document).on("selectionchange",(function(e){if(that.model.enabled){that.events.onSelectionChanged.fire(e)}}))};fluid.orator.selectionReader.updateText=function(that,state){if(state){that.setTextFromSelection()}else{that.applier.change("text","","ADD","updateText")}};fluid.orator.selectionReader.setTextFromSelection=function(that,filter){that.selection=window.getSelection();var selectedText=that.selection.toString();selectedText=!filter||filter(selectedText)?selectedText:"";that.applier.change("text",selectedText,"ADD","setTextFromSelection")};fluid.orator.selectionReader.parseRange=function(range,domParser){if(range.commonAncestorContainer.nodeType===Node.TEXT_NODE){return[{text:range.commonAncestorContainer.textContent.slice(range.startOffset,range.endOffset),options:{lang:$(range.commonAncestorContainer.parentNode).closest("[lang]").attr("lang")}}]}if(range.commonAncestorContainer===range.startContainer){return fluid.orator.selectionReader.parseElement(range.commonAncestorContainer.childNodes[range.startOffset],domParser)}return fluid.orator.selectionReader.parseElement(range.commonAncestorContainer,domParser,range)};fluid.orator.selectionReader.parseElement=function(element,domParser,options){options=options||{};var parsed=[];var fromParser=domParser(element);var parsedNodes=fluid.getMembers(fromParser,"node");var startIndex=options.startContainer?parsedNodes.indexOf(options.startContainer):0;var endIndex=options.endContainer?parsedNodes.indexOf(options.endContainer):parsedNodes.length-1;if(startIndex>=0&&endIndex>=0){for(var i=startIndex;i<=endIndex;i++){var startOffset=i===startIndex?options.startOffset:0;var endOffset=i===endIndex?options.endOffset:undefined;var node=fromParser[i].node;var lang=fromParser[i].lang;var lastParsed=parsed[parsed.length-1];if(parsed.length&&lastParsed.options.lang===lang){lastParsed.text+=node.textContent.slice(startOffset,endOffset)}else{parsed.push({text:node.textContent.slice(startOffset,endOffset),options:{lang:lang}})}}}return parsed};fluid.orator.selectionReader.calculatePosition=function(range){var rangeRect=range.getClientRects()[0];var rangeParent=range.startContainer.parentNode;var rangeParentRect=rangeParent.getClientRects()[0];var offsetParent=rangeParent.offsetParent;var bodyBorderAdjustment={top:0,left:0};if(offsetParent&&offsetParent.tagName.toLowerCase()==="body"){bodyBorderAdjustment.top=Math.abs(offsetParent.offsetTop)-offsetParent.clientTop;bodyBorderAdjustment.left=Math.abs(offsetParent.offsetLeft)-offsetParent.clientLeft}return{viewPort:{top:rangeRect.top,bottom:rangeRect.bottom,left:rangeRect.left},offset:{top:rangeParent.offsetTop+rangeRect.top-rangeParentRect.top+bodyBorderAdjustment.top,bottom:rangeParent.offsetTop+rangeRect.bottom-rangeParentRect.top+bodyBorderAdjustment.top,left:rangeParent.offsetLeft+rangeRect.left-rangeParentRect.left+bodyBorderAdjustment.left}}};fluid.orator.selectionReader.renderControlState=function(that,control){var text=that.options.strings[that.model.play?"stop":"play"];control.find(that.options.selectors.controlLabel).text(text)};fluid.orator.selectionReader.adjustForHorizontalCollision=function(control,position,viewPortWidth){viewPortWidth=viewPortWidth||document.body.clientWidth;var controlMidPoint=parseFloat(control.css("width"))/2;if(controlMidPoint>position.viewPort.left){control.css("left",position.offset.left+controlMidPoint-position.viewPort.left)}else if(controlMidPoint+position.viewPort.left>viewPortWidth){control.css("left",position.offset.left-viewPortWidth+position.viewPort.left)}};fluid.orator.selectionReader.adjustForVerticalCollision=function(control,position,belowStyle,aboveStyle){var controlHeight=parseFloat(control.css("height"));if(controlHeight>position.viewPort.top){control.css("top",position.offset.bottom);control.removeClass(aboveStyle);control.addClass(belowStyle)}else{control.removeClass(belowStyle);control.addClass(aboveStyle)}};fluid.orator.selectionReader.createControl=function(that){var control=$(that.options.markup.control);control.addClass(that.options.styles.control);control.on("click",(function(){that.events.onToggleControl.fire()}));return control};fluid.orator.selectionReader.renderControl=function(that,state){if(state){var selectionRange=window.getSelection().getRangeAt(0);var controlContainer=selectionRange.startContainer.parentNode.offsetParent||selectionRange.startContainer.parentNode;var position=fluid.orator.selectionReader.calculatePosition(selectionRange);that.control=that.control||fluid.orator.selectionReader.createControl(that);that.control.css({top:position.offset.top,left:position.offset.left});fluid.orator.selectionReader.renderControlState(that,that.control);that.control.appendTo(controlContainer);fluid.orator.selectionReader.adjustForVerticalCollision(that.control,position,that.options.styles.below,that.options.styles.above);fluid.orator.selectionReader.adjustForHorizontalCollision(that.control,position);selectionRange.detach()}else{if(that.control){that.control.detach()}}};fluid.orator.selectionReader.togglePlay=function(that,state){var newState=state||!that.model.play;that[newState?"play":"stop"]()}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.store",{gradeNames:["fluid.dataSource","fluid.contextAware"],contextAwareness:{strategy:{defaultGradeNames:"fluid.prefs.cookieStore"}}});fluid.prefs.store.decodeURIComponent=function(payload){if(typeof payload==="string"){return decodeURIComponent(payload)}};fluid.prefs.store.encodeURIComponent=function(payload){if(typeof payload==="string"){return encodeURIComponent(payload)}};fluid.defaults("fluid.prefs.cookieStore",{gradeNames:["fluid.dataSource"],writableGrade:"fluid.prefs.cookieStore.writable",cookie:{name:"fluid-ui-settings"},listeners:{"onRead.impl":{listener:"fluid.prefs.cookieStore.getCookie",args:["{arguments}.1"]},"onRead.decodeURI":{listener:"fluid.prefs.store.decodeURIComponent",priority:"before:encoding"}},invokers:{get:{args:["{that}","{arguments}.0","{that}.options.cookie"]}}});fluid.defaults("fluid.prefs.cookieStore.writable",{gradeNames:["fluid.dataSource.writable"],cookie:{path:"/",samesite:"strict"},listeners:{"onWrite.encodeURI":{func:"fluid.prefs.store.encodeURIComponent",priority:"before:impl"},"onWrite.impl":{listener:"fluid.prefs.cookieStore.writeCookie"},"onWriteResponse.decodeURI":{listener:"fluid.prefs.store.decodeURIComponent",priority:"before:encoding"}},invokers:{set:{args:["{that}","{arguments}.0","{arguments}.1","{that}.options.cookie"]}}});fluid.prefs.cookieStore.getCookie=function(options){var cookieName=fluid.get(options,["directModel","cookieName"])||options.name;var cookie=document.cookie;if(cookie.length<=0){return}var cookiePrefix=cookieName+"=";var startIndex=cookie.indexOf(cookiePrefix);if(startIndex<0){return}startIndex=startIndex+cookiePrefix.length;var endIndex=cookie.indexOf(";",startIndex);if(endIndex<startIndex){endIndex=cookie.length}return cookie.substring(startIndex,endIndex)};fluid.prefs.cookieStore.assembleCookie=function(cookieName,payload,options){options=options||{};var cookieStr=cookieName+"="+payload;fluid.each(options,(function(value,attribute){var isNameAttr=attribute.toLowerCase()==="name";var isSecureAttr=attribute.toLowerCase()==="secure";if(!isNameAttr&&!isSecureAttr){cookieStr+="; "+attribute+"="+value}else if(isSecureAttr&&value){cookieStr+="; "+attribute}}));return cookieStr};fluid.prefs.cookieStore.writeCookie=function(payload,options){var cookieName=fluid.get(options,["directModel","cookieName"])||options.name;var cookieStr=fluid.prefs.cookieStore.assembleCookie(cookieName,payload,options);document.cookie=cookieStr;return payload};fluid.defaults("fluid.dataSource.encoding.model",{gradeNames:"fluid.component",invokers:{parse:"fluid.identity",render:"fluid.identity"},contentType:"application/json"});fluid.defaults("fluid.prefs.tempStore",{gradeNames:["fluid.dataSource","fluid.modelComponent"],writableGrade:"fluid.prefs.tempStore.writable",components:{encoding:{type:"fluid.dataSource.encoding.model"}},listeners:{"onRead.impl":{listener:"fluid.identity",args:["{that}.model"]}}});fluid.defaults("fluid.prefs.tempStore.writable",{gradeNames:["fluid.dataSource.writable","fluid.modelComponent"],components:{encoding:{type:"fluid.dataSource.encoding.model"}},listeners:{"onWrite.impl":{listener:"fluid.prefs.tempStore.write",args:["{that}","{arguments}.0","{arguments}.1"]}}});fluid.prefs.tempStore.write=function(that,settings){var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"",type:"DELETE"});transaction.change("",settings);transaction.commit();return that.model};fluid.defaults("fluid.prefs.globalSettingsStore",{gradeNames:["fluid.component"],components:{settingsStore:{type:"fluid.prefs.store",options:{gradeNames:["fluid.resolveRootSingle"],writable:true,singleRootType:"fluid.prefs.store"}}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.initialModel",{gradeNames:["fluid.component"],members:{initialModel:{preferences:{}}}});fluid.defaults("fluid.uiEnhancer",{gradeNames:["fluid.viewComponent"],defaultLocale:"en",invokers:{updateModel:{func:"{that}.applier.change",args:["","{arguments}.0"]}},userGrades:"@expand:fluid.prefs.filterEnhancerGrades({that}.options.gradeNames)",distributeOptions:{"uiEnhancer.messageLoader.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that messageLoader}.options.defaultLocale"},"uiEnhancer.messageLoader.locale":{source:"{that}.options.locale",target:"{that messageLoader}.model.locale"}}});fluid.defaults("fluid.uiEnhancer.root",{gradeNames:["fluid.uiEnhancer","fluid.resolveRootSingle"],singleRootType:"fluid.uiEnhancer"});fluid.uiEnhancer.ignorableGrades=["fluid.uiEnhancer","fluid.uiEnhancer.root","fluid.resolveRoot","fluid.resolveRootSingle"];fluid.prefs.filterEnhancerGrades=function(gradeNames){return fluid.remove_if(fluid.makeArray(gradeNames),(function(gradeName){return fluid.frameworkGrades.indexOf(gradeName)!==-1||fluid.uiEnhancer.ignorableGrades.indexOf(gradeName)!==-1}))};fluid.prefs.filterEnhancerOptions=function(options){return fluid.filterKeys(options,["classnameMap","fontSizeMap","tocTemplate","tocMessage","components"])};fluid.defaults("fluid.pageEnhancer",{gradeNames:["fluid.component","fluid.originalEnhancerOptions","fluid.prefs.initialModel","fluid.prefs.settingsGetter","fluid.resolveRootSingle"],distributeOptions:{"pageEnhancer.uiEnhancer":{source:"{that}.options.uiEnhancer",target:"{that > uiEnhancer}.options"}},singleRootType:"fluid.pageEnhancer",components:{uiEnhancer:{type:"fluid.uiEnhancer.root",container:"body"}},originalUserOptions:"@expand:fluid.prefs.filterEnhancerOptions({uiEnhancer}.options)",listeners:{"onCreate.initModel":"fluid.pageEnhancer.init"}});fluid.pageEnhancer.init=function(that){var fetchPromise=that.getSettings();fetchPromise.then((function(fetchedSettings){that.uiEnhancer.updateModel(fluid.get(fetchedSettings,"preferences"))}))}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.prefsEditorLoader",{gradeNames:["fluid.prefs.settingsGetter","fluid.prefs.initialModel","fluid.viewComponent"],defaultLocale:"en",components:{prefsEditor:{priority:"last",type:"fluid.prefs.prefsEditor",createOnEvent:"onCreatePrefsEditorReady",options:{members:{initialModel:"{prefsEditorLoader}.initialModel"},invokers:{getSettings:"{prefsEditorLoader}.getSettings"},listeners:{"onReady.boil":{listener:"{prefsEditorLoader}.events.onReady",args:["{prefsEditorLoader}"]}}}},templateLoader:{type:"fluid.resourceLoader",options:{events:{onResourcesLoaded:"{prefsEditorLoader}.events.onPrefsEditorTemplatesLoaded"}}},messageLoader:{type:"fluid.resourceLoader",createOnEvent:"afterInitialSettingsFetched",options:{defaultLocale:"{prefsEditorLoader}.options.defaultLocale",locale:"{prefsEditorLoader}.settings.preferences.locale",resourceOptions:{dataType:"json"},events:{onResourcesLoaded:"{prefsEditorLoader}.events.onPrefsEditorMessagesLoaded"}}}},listeners:{"onCreate.getInitialSettings":{listener:"fluid.prefs.prefsEditorLoader.getInitialSettings",args:["{that}"]}},events:{afterInitialSettingsFetched:null,onPrefsEditorTemplatesLoaded:null,onPrefsEditorMessagesLoaded:null,onCreatePrefsEditorReady:{events:{templateLoaded:"onPrefsEditorTemplatesLoaded",prefsEditorMessagesLoaded:"onPrefsEditorMessagesLoaded"}},onReady:null},distributeOptions:{"prefsEditorLoader.templateLoader":{source:"{that}.options.templateLoader",removeSource:true,target:"{that > templateLoader}.options"},"prefsEditorLoader.templateLoader.terms":{source:"{that}.options.terms",target:"{that > templateLoader}.options.terms"},"prefsEditorLoader.messageLoader":{source:"{that}.options.messageLoader",removeSource:true,target:"{that > messageLoader}.options"},"prefsEditorLoader.messageLoader.terms":{source:"{that}.options.terms",target:"{that > messageLoader}.options.terms"},"prefsEditorLoader.prefsEditor":{source:"{that}.options.prefsEditor",removeSource:true,target:"{that > prefsEditor}.options"}}});fluid.prefs.prefsEditorLoader.getInitialSettings=function(that){var promise=fluid.promise();var fetchPromise=that.getSettings();fetchPromise.then((function(savedSettings){that.settings=$.extend(true,{},that.initialModel,savedSettings);that.events.afterInitialSettingsFetched.fire(that.settings)}),(function(error){fluid.log(fluid.logLevel.WARN,error);that.settings=that.initialModel;that.events.afterInitialSettingsFetched.fire(that.settings)}));fluid.promise.follow(fetchPromise,promise);return promise};fluid.defaults("fluid.prefs.transformDefaultPanelsOptions",{gradeNames:["fluid.viewComponent"],distributeOptions:{"transformDefaultPanelsOptions.textSize":{source:"{that}.options.textSize",removeSource:true,target:"{that textSize}.options"},"transformDefaultPanelsOptions.lineSpace":{source:"{that}.options.lineSpace",removeSource:true,target:"{that lineSpace}.options"},"transformDefaultPanelsOptions.textFont":{source:"{that}.options.textFont",removeSource:true,target:"{that textFont}.options"},"transformDefaultPanelsOptions.contrast":{source:"{that}.options.contrast",removeSource:true,target:"{that contrast}.options"},"transformDefaultPanelsOptions.layoutControls":{source:"{that}.options.layoutControls",removeSource:true,target:"{that layoutControls}.options"},"transformDefaultPanelsOptions.enhanceInputs":{source:"{that}.options.enhanceInputs",removeSource:true,target:"{that enhanceInputs}.options"}}});fluid.defaults("fluid.prefs.settingsGetter",{gradeNames:["fluid.component"],members:{getSettings:"{fluid.prefs.store}.get"}});fluid.defaults("fluid.prefs.settingsSetter",{gradeNames:["fluid.component"],invokers:{setSettings:{funcName:"fluid.prefs.settingsSetter.setSettings",args:["{arguments}.0","{arguments}.1","{fluid.prefs.store}.set"]}}});fluid.prefs.settingsSetter.setSettings=function(model,directModel,set){var userSettings=fluid.copy(model);return set(directModel,userSettings)};fluid.defaults("fluid.prefs.uiEnhancerRelay",{gradeNames:["fluid.modelComponent"],listeners:{"onCreate.addListener":"{that}.addListener","onDestroy.removeListener":"{that}.removeListener"},events:{updateEnhancerModel:"{fluid.prefs.prefsEditor}.events.onUpdateEnhancerModel"},invokers:{addListener:{funcName:"fluid.prefs.uiEnhancerRelay.addListener",args:["{that}.events.updateEnhancerModel","{that}.updateEnhancerModel"]},removeListener:{funcName:"fluid.prefs.uiEnhancerRelay.removeListener",args:["{that}.events.updateEnhancerModel","{that}.updateEnhancerModel"]},updateEnhancerModel:{funcName:"fluid.prefs.uiEnhancerRelay.updateEnhancerModel",args:["{uiEnhancer}","{fluid.prefs.prefsEditor}.model.preferences"]}}});fluid.prefs.uiEnhancerRelay.addListener=function(modelChanged,listener){modelChanged.addListener(listener)};fluid.prefs.uiEnhancerRelay.removeListener=function(modelChanged,listener){modelChanged.removeListener(listener)};fluid.prefs.uiEnhancerRelay.updateEnhancerModel=function(uiEnhancer,newModel){uiEnhancer.updateModel(newModel)};fluid.defaults("fluid.prefs.prefsEditor",{gradeNames:["fluid.prefs.settingsGetter","fluid.prefs.settingsSetter","fluid.prefs.initialModel","fluid.remoteModelComponent","fluid.viewComponent"],invokers:{fetchImpl:{funcName:"fluid.prefs.prefsEditor.fetchImpl",args:["{that}"]},writeImpl:{funcName:"fluid.prefs.prefsEditor.writeImpl",args:["{that}","{arguments}.0"]},applyChanges:{funcName:"fluid.prefs.prefsEditor.applyChanges",args:["{that}"]},save:{funcName:"fluid.prefs.prefsEditor.save",args:["{that}"]},saveAndApply:{funcName:"fluid.prefs.prefsEditor.saveAndApply",args:["{that}"]},reset:{funcName:"fluid.prefs.prefsEditor.reset",args:["{that}"]},cancel:{funcName:"fluid.prefs.prefsEditor.cancel",args:["{that}"]}},selectors:{panels:".flc-prefsEditor-panel",cancel:".flc-prefsEditor-cancel",reset:".flc-prefsEditor-reset",save:".flc-prefsEditor-save",previewFrame:".flc-prefsEditor-preview-frame"},events:{onSave:null,onCancel:null,beforeReset:null,afterReset:null,onAutoSave:null,modelChanged:null,onPrefsEditorRefresh:null,onUpdateEnhancerModel:null,onPrefsEditorMarkupReady:null,onReady:null},listeners:{"onCreate.init":"fluid.prefs.prefsEditor.init","onAutoSave.save":"{that}.save"},model:{local:{preferences:"{that}.model.preferences"}},modelListeners:{preferences:[{listener:"fluid.prefs.prefsEditor.handleAutoSave",args:["{that}"],namespace:"autoSave",excludeSource:["init"]},{listener:"{that}.events.modelChanged.fire",args:["{change}.value"],namespace:"modelChange"}]},resources:{template:"{templateLoader}.resources.prefsEditor"},autoSave:false});fluid.prefs.prefsEditor.applyChanges=function(that){that.events.onUpdateEnhancerModel.fire()};fluid.prefs.prefsEditor.fetchImpl=function(that){var promise=fluid.promise(),fetchPromise=that.getSettings();fetchPromise.then((function(savedModel){var completeModel=$.extend(true,{},that.initialModel,savedModel);promise.resolve(completeModel)}),promise.reject);return promise};fluid.prefs.prefsEditor.writeImpl=function(that,modelToSave){var promise=fluid.promise(),stats={changes:0,unchanged:0,changeMap:{}},changedPrefs={};modelToSave=fluid.copy(modelToSave);fluid.model.diff(modelToSave.preferences,fluid.get(that.initialModel,["preferences"]),stats);if(stats.changes===0){delete modelToSave.preferences}else{fluid.each(stats.changeMap,(function(state,pref){fluid.set(changedPrefs,pref,modelToSave.preferences[pref])}));modelToSave.preferences=changedPrefs}that.events.onSave.fire(modelToSave);var setPromise=that.setSettings(modelToSave);fluid.promise.follow(setPromise,promise);return promise};fluid.prefs.prefsEditor.save=function(that){var promise=fluid.promise();if(!that.model||$.isEmptyObject(that.model)){promise.resolve({})}else{var writePromise=that.write();fluid.promise.follow(writePromise,promise)}return promise};fluid.prefs.prefsEditor.saveAndApply=function(that){var promise=fluid.promise();var prevSettingsPromise=that.getSettings(),savePromise=that.save();prevSettingsPromise.then((function(prevSettings){savePromise.then((function(changedSelections){if(!fluid.model.diff(fluid.get(changedSelections,"preferences"),fluid.get(prevSettings,"preferences"))){that.events.onPrefsEditorRefresh.fire();that.applyChanges()}}));fluid.promise.follow(savePromise,promise)}));return promise};fluid.prefs.prefsEditor.reset=function(that){var transaction=that.applier.initiate();that.events.beforeReset.fire(that);transaction.fireChangeRequest({path:"preferences",type:"DELETE"});transaction.change("",fluid.copy(that.initialModel));transaction.commit();that.events.onPrefsEditorRefresh.fire();that.events.afterReset.fire(that)};fluid.prefs.prefsEditor.cancel=function(that){that.events.onCancel.fire();var fetchPromise=that.fetch();fetchPromise.then((function(){var transaction=that.applier.initiate();transaction.fireChangeRequest({path:"preferences",type:"DELETE"});transaction.change("",that.model.remote);transaction.commit();that.events.onPrefsEditorRefresh.fire()}))};fluid.prefs.prefsEditor.finishInit=function(that){var bindHandlers=function(that){var saveButton=that.locate("save");if(saveButton.length>0){saveButton.on("click",that.saveAndApply);var form=fluid.findForm(saveButton);$(form).on("submit",(function(){that.saveAndApply()}))}that.locate("reset").on("click",that.reset);that.locate("cancel").on("click",that.cancel)};that.container.append(that.options.resources.template.resourceText);bindHandlers(that);var fetchPromise=that.fetch();fetchPromise.then((function(){that.events.onPrefsEditorMarkupReady.fire();that.events.onPrefsEditorRefresh.fire();that.applyChanges();that.events.onReady.fire(that)}))};fluid.prefs.prefsEditor.handleAutoSave=function(that){if(that.options.autoSave){that.events.onAutoSave.fire()}};fluid.prefs.prefsEditor.init=function(that){setTimeout((function(){if(!fluid.isDestroyed(that)){fluid.prefs.prefsEditor.finishInit(that)}}),1)};fluid.defaults("fluid.prefs.preview",{gradeNames:["fluid.viewComponent"],components:{enhancer:{type:"fluid.uiEnhancer",container:"{preview}.enhancerContainer",createOnEvent:"onReady"},templateLoader:"{templateLoader}"},invokers:{updateModel:{funcName:"fluid.prefs.preview.updateModel",args:["{preview}","{prefsEditor}.model.preferences"]}},events:{onReady:null},listeners:{"onCreate.startLoadingContainer":"fluid.prefs.preview.startLoadingContainer","{prefsEditor}.events.modelChanged":{listener:"{that}.updateModel",namespace:"updateModel"},"onReady.updateModel":"{that}.updateModel"},templateUrl:"%prefix/PrefsEditorPreview.html"});fluid.prefs.preview.updateModel=function(that,preferences){setTimeout((function(){if(that.enhancer){that.enhancer.updateModel(preferences)}}),0)};fluid.prefs.preview.startLoadingContainer=function(that){var templateUrl=that.templateLoader.transformURL(that.options.templateUrl);that.container.on("load",(function(){that.enhancerContainer=$("body",that.container.contents());that.events.onReady.fire()}));that.container.attr("src",templateUrl)}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.msgLookup",{gradeNames:["fluid.component"],members:{msgLookup:{expander:{funcName:"fluid.prefs.stringLookup",args:["{msgResolver}","{that}.options.stringArrayIndex"]}}},stringArrayIndex:{}});fluid.prefs.stringLookup=function(messageResolver,stringArrayIndex){var that={id:fluid.allocateGuid()};that.singleLookup=function(value){var looked=messageResolver.lookup([value]);return fluid.get(looked,"template")};that.multiLookup=function(values){return fluid.transform(values,(function(value){return that.singleLookup(value)}))};that.lookup=function(value){var values=fluid.get(stringArrayIndex,value)||value;var lookupFn=fluid.isArrayable(values)?"multiLookup":"singleLookup";return that[lookupFn](values)};that.resolvePathSegment=that.lookup;return that};fluid.defaults("fluid.prefs.panel",{gradeNames:["fluid.prefs.msgLookup","fluid.rendererComponent"],events:{onDomBind:null},listeners:{"onCreate.onDomBind":"{that}.events.onDomBind"},components:{msgResolver:{type:"fluid.messageResolver"}},rendererOptions:{messageLocator:"{msgResolver}.resolve"},distributeOptions:{"panel.msgResolver.messageBase":{source:"{that}.options.messageBase",target:"{that > msgResolver}.options.messageBase"}}});fluid.defaults("fluid.prefs.subPanel",{gradeNames:["fluid.prefs.panel","{that}.getDomBindGrade"],listeners:{"{compositePanel}.events.afterRender":{listener:"{that}.events.afterRender",args:["{that}"],namespce:"boilAfterRender"},"onCreate.onDomBind":null,"afterRender.onDomBind":"{that}.resetDomBinder"},rules:{expander:{func:"fluid.prefs.subPanel.generateRules",args:["{that}.options.preferenceMap"]}},invokers:{refreshView:"{compositePanel}.refreshView",resetDomBinder:{funcName:"fluid.prefs.subPanel.resetDomBinder",args:["{that}"]},getDomBindGrade:{funcName:"fluid.prefs.subPanel.getDomBindGrade",args:["{prefsEditor}"]}},strings:{},parentBundle:"{compositePanel}.messageResolver",renderOnInit:false});fluid.defaults("fluid.prefs.subPanel.domBind",{gradeNames:["fluid.component"],listeners:{"onDomBind.domChange":{listener:"{prefsEditor}.events.onSignificantDOMChange"}}});fluid.prefs.subPanel.getDomBindGrade=function(prefsEditor){var hasListener=fluid.get(prefsEditor,"options.events.onSignificantDOMChange")!==undefined;if(hasListener){return"fluid.prefs.subPanel.domBind"}};fluid.prefs.subPanel.resetDomBinder=function(that){var userJQuery=that.container.constructor;var context=that.container[0].ownerDocument;var selector=that.container.selector;that.container=userJQuery(selector,context);that.container.selector=selector;that.container.context=context;if(that.container.length===0){fluid.fail("resetDomBinder got no elements in DOM for container searching for selector "+that.container.selector)}fluid.initDomBinder(that,that.options.selectors);that.events.onDomBind.fire(that)};fluid.prefs.subPanel.safePrefKey=function(prefKey){return prefKey.replace(/[.]/g,"_")};fluid.prefs.subPanel.generateRules=function(preferenceMap){var rules={};fluid.each(preferenceMap,(function(prefObj,prefKey){fluid.each(prefObj,(function(value,prefRule){if(prefRule.indexOf("model.")===0){rules[fluid.prefs.subPanel.safePrefKey(prefKey)]=prefRule.slice("model.".length)}}))}));return rules};fluid.registerNamespace("fluid.prefs.compositePanel");fluid.prefs.compositePanel.arrayMergePolicy=function(target,source){target=fluid.makeArray(target);source=fluid.makeArray(source);fluid.each(source,(function(selector){if(target.indexOf(selector)<0){target.push(selector)}}));return target};fluid.defaults("fluid.prefs.compositePanel",{gradeNames:["fluid.prefs.panel","{that}.getDistributeOptionsGrade","{that}.getSubPanelLifecycleBindings"],mergePolicy:{subPanelOverrides:"noexpand",selectorsToIgnore:fluid.prefs.compositePanel.arrayMergePolicy},selectors:{},selectorsToIgnore:[],repeatingSelectors:[],events:{initSubPanels:null},listeners:{"onCreate.combineResources":"{that}.combineResources","onCreate.appendTemplate":{this:"{that}.container",method:"append",args:["{that}.options.resources.template.resourceText"]},"onCreate.initSubPanels":"{that}.events.initSubPanels","onCreate.hideInactive":"{that}.hideInactive","afterRender.hideInactive":"{that}.hideInactive"},invokers:{getDistributeOptionsGrade:{funcName:"fluid.prefs.compositePanel.assembleDistributeOptions",args:["{that}.options.components"]},getSubPanelLifecycleBindings:{funcName:"fluid.prefs.compositePanel.subPanelLifecycleBindings",args:["{that}","{that}.options.components"]},combineResources:{funcName:"fluid.prefs.compositePanel.combineTemplates",args:["{that}.options.resources","{that}.options.selectors"]},produceSubPanelTrees:{funcName:"fluid.prefs.compositePanel.produceSubPanelTrees",args:["{that}"]},expandProtoTree:{funcName:"fluid.prefs.compositePanel.expandProtoTree",args:["{that}"]},produceTree:{funcName:"fluid.prefs.compositePanel.produceTree",args:["{that}"]},hideInactive:{funcName:"fluid.prefs.compositePanel.hideInactive",args:["{that}"]},handleRenderOnPreference:{funcName:"fluid.prefs.compositePanel.handleRenderOnPreference",args:["{that}","{that}.refreshView","{that}.conditionalCreateEvent","{arguments}.0","{arguments}.1","{arguments}.2"]},conditionalCreateEvent:{funcName:"fluid.prefs.compositePanel.conditionalCreateEvent"}},subPanelOverrides:{gradeNames:["fluid.prefs.subPanel"]},rendererFnOptions:{noexpand:true,cutpointGenerator:"fluid.prefs.compositePanel.cutpointGenerator",subPanelRepeatingSelectors:{expander:{funcName:"fluid.prefs.compositePanel.surfaceRepeatingSelectors",args:["{that}.options.components"]}}},components:{},resources:{}});fluid.prefs.compositePanel.prefetchComponentOptions=function(type,options){var baseOptions=fluid.getMergedDefaults(type,fluid.get(options,"gradeNames"));return fluid.merge(baseOptions.mergePolicy,fluid.copy(baseOptions),options)};fluid.prefs.compositePanel.isPanel=function(type,options){var opts=fluid.prefs.compositePanel.prefetchComponentOptions(type,options);return fluid.hasGrade(opts,"fluid.prefs.panel")};fluid.prefs.compositePanel.isActivePanel=function(comp){return comp&&fluid.hasGrade(comp.options,"fluid.prefs.panel")};fluid.prefs.compositePanel.assembleDistributeOptions=function(components){var gradeName="fluid.prefs.compositePanel.distributeOptions_"+fluid.allocateGuid();var distributeOptions={};var relayOption={};fluid.each(components,(function(componentOptions,componentName){if(fluid.prefs.compositePanel.isPanel(componentOptions.type,componentOptions.options)){distributeOptions[componentName+".subPanelOverrides"]={source:"{that}.options.subPanelOverrides",target:"{that > "+componentName+"}.options"}}var componentRelayRules={};var definedOptions=fluid.prefs.compositePanel.prefetchComponentOptions(componentOptions.type,componentOptions.options);var preferenceMap=fluid.get(definedOptions,["preferenceMap"]);fluid.each(preferenceMap,(function(prefObj,prefKey){fluid.each(prefObj,(function(value,prefRule){if(prefRule.indexOf("model.")===0){fluid.set(componentRelayRules,prefRule.slice("model.".length),"{compositePanel}.model."+fluid.prefs.subPanel.safePrefKey(prefKey))}}))}));relayOption[componentName]=componentRelayRules;distributeOptions[componentName+".modelRelay"]={source:"{that}.options.relayOption."+componentName,target:"{that > "+componentName+"}.options.model"}}));fluid.defaults(gradeName,{relayOption:relayOption,distributeOptions:distributeOptions});return gradeName};fluid.prefs.compositePanel.conditionalCreateEvent=function(value,createEvent){if(value){createEvent()}};fluid.prefs.compositePanel.handleRenderOnPreference=function(that,refreshViewFunc,conditionalCreateEventFunc,value,createEvent,componentNames){componentNames=fluid.makeArray(componentNames);conditionalCreateEventFunc(value,createEvent);fluid.each(componentNames,(function(componentName){var comp=that[componentName];if(!value&&comp){comp.destroy()}}));refreshViewFunc()};fluid.prefs.compositePanel.creationEventName=function(pref){return"initOn_"+pref};fluid.prefs.compositePanel.generateModelListeners=function(conditionals){return fluid.transform(conditionals,(function(componentNames,pref){var eventName=fluid.prefs.compositePanel.creationEventName(pref);return{func:"{that}.handleRenderOnPreference",args:["{change}.value","{that}.events."+eventName+".fire",componentNames],namespace:"handleRenderOnPreference_"+pref}}))};fluid.prefs.compositePanel.rebaseSelectorName=function(memberName,selectorName){return memberName+"_"+selectorName};fluid.prefs.compositePanel.rebaseSelector=function(compositePanelSelector,selector){return compositePanelSelector+" "+selector};fluid.prefs.compositePanel.subPanelLifecycleBindings=function(that,components){var gradeName="fluid.prefs.compositePanel.subPanelCreationTimingDistibution_"+fluid.allocateGuid();var distributeOptions={};var subPanelCreationOpts={default:"initSubPanels"};var conditionals={};var listeners={};var events={};var selectors={};fluid.each(components,(function(componentOptions,componentName){if(fluid.prefs.compositePanel.isPanel(componentOptions.type,componentOptions.options)){var creationEventOpt="default";var renderOnPreference=fluid.get(componentOptions,"options.renderOnPreference");if(renderOnPreference){var pref=fluid.prefs.subPanel.safePrefKey(renderOnPreference);var onCreateListener="onCreate."+pref;creationEventOpt=fluid.prefs.compositePanel.creationEventName(pref);subPanelCreationOpts[creationEventOpt]=creationEventOpt;events[creationEventOpt]=null;conditionals[pref]=conditionals[pref]||[];conditionals[pref].push(componentName);listeners[onCreateListener]={listener:"{that}.conditionalCreateEvent",args:["{that}.model."+pref,"{that}.events."+creationEventOpt+".fire"]}}distributeOptions[componentName+".subPanelCreationOpts"]={source:"{that}.options.subPanelCreationOpts."+creationEventOpt,target:"{that}.options.components."+componentName+".createOnEvent"};var opts=fluid.prefs.compositePanel.prefetchComponentOptions(componentOptions.type,componentOptions.options);fluid.each(opts.selectors,(function(selector,selName){if(!opts.selectorsToIgnore||opts.selectorsToIgnore.indexOf(selName)<0){selectors[fluid.prefs.compositePanel.rebaseSelectorName(componentName,selName)]={expander:{funcName:"fluid.prefs.compositePanel.rebaseSelector",args:["{that}.options.selectors."+componentName,selector]}}}}))}}));fluid.defaults(gradeName,{events:events,listeners:listeners,modelListeners:fluid.prefs.compositePanel.generateModelListeners(conditionals),subPanelCreationOpts:subPanelCreationOpts,distributeOptions:distributeOptions,selectors:selectors});return gradeName};fluid.prefs.compositePanel.hideInactive=function(that){fluid.each(that.options.components,(function(componentOpts,componentName){if(fluid.prefs.compositePanel.isPanel(componentOpts.type,componentOpts.options)&&!fluid.prefs.compositePanel.isActivePanel(that[componentName])){that.locate(componentName).hide()}}))};fluid.prefs.compositePanel.combineTemplates=function(resources,selectors){var cutpoints=[];var tree={children:[]};fluid.each(resources,(function(resource,resourceName){if(resourceName!=="template"){tree.children.push({ID:resourceName,markup:resource.resourceText});cutpoints.push({id:resourceName,selector:selectors[resourceName]})}}));var resourceSpec={base:{resourceText:resources.template.resourceText,href:".",resourceKey:".",cutpoints:cutpoints}};var templates=fluid.parseTemplates(resourceSpec,["base"]);var renderer=fluid.renderer(templates,tree,{cutpoints:cutpoints,debugMode:true});resources.template.resourceText=renderer.renderTemplates()};fluid.prefs.compositePanel.surfaceRepeatingSelectors=function(components){var repeatingSelectors=[];fluid.each(components,(function(compOpts,compName){if(fluid.prefs.compositePanel.isPanel(compOpts.type,compOpts.options)){var opts=fluid.prefs.compositePanel.prefetchComponentOptions(compOpts.type,compOpts.options);var rebasedRepeatingSelectors=fluid.transform(opts.repeatingSelectors,(function(selector){return fluid.prefs.compositePanel.rebaseSelectorName(compName,selector)}));repeatingSelectors=repeatingSelectors.concat(rebasedRepeatingSelectors)}}));return repeatingSelectors};fluid.prefs.compositePanel.cutpointGenerator=function(selectors,options){var opts={selectorsToIgnore:options.selectorsToIgnore,repeatingSelectors:options.repeatingSelectors.concat(options.subPanelRepeatingSelectors)};return fluid.renderer.selectorsToCutpoints(selectors,opts)};fluid.prefs.compositePanel.rebaseID=function(value,memberName){return memberName+"_"+value};fluid.prefs.compositePanel.rebaseParentRelativeID=function(val,memberName){var slicePos="..::".length;return val.slice(0,slicePos)+fluid.prefs.compositePanel.rebaseID(val.slice(slicePos),memberName)};fluid.prefs.compositePanel.rebaseValueBinding=function(value,modelRelayRules){return fluid.find(modelRelayRules,(function(oldModelPath,newModelPath){if(value===oldModelPath){return newModelPath}else if(value.indexOf(oldModelPath)===0){return value.replace(oldModelPath,newModelPath)}}))||value};fluid.prefs.compositePanel.rebaseTreeComp=function(msgResolver,model,treeComp,memberName,modelRelayRules){var rebased=fluid.copy(treeComp);if(rebased.ID){rebased.ID=fluid.prefs.compositePanel.rebaseID(rebased.ID,memberName)}if(rebased.children){rebased.children=fluid.prefs.compositePanel.rebaseTree(msgResolver,model,rebased.children,memberName,modelRelayRules)}else if(rebased.selection){rebased.selection=fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,rebased.selection,memberName,modelRelayRules)}else if(rebased.messagekey){rebased.componentType="UIBound";rebased.value=msgResolver.resolve(rebased.messagekey.value,rebased.messagekey.args);delete rebased.messagekey}else if(rebased.parentRelativeID){rebased.parentRelativeID=fluid.prefs.compositePanel.rebaseParentRelativeID(rebased.parentRelativeID,memberName)}else if(rebased.valuebinding){rebased.valuebinding=fluid.prefs.compositePanel.rebaseValueBinding(rebased.valuebinding,modelRelayRules);if(rebased.value){var modelValue=fluid.get(model,rebased.valuebinding);rebased.value=modelValue!==undefined?modelValue:rebased.value}}return rebased};fluid.prefs.compositePanel.rebaseTree=function(msgResolver,model,tree,memberName,modelRelayRules){var rebased;if(fluid.isArrayable(tree)){rebased=fluid.transform(tree,(function(treeComp){return fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,treeComp,memberName,modelRelayRules)}))}else{rebased=fluid.prefs.compositePanel.rebaseTreeComp(msgResolver,model,tree,memberName,modelRelayRules)}return rebased};fluid.prefs.compositePanel.produceTree=function(that){var produceTreeOption=that.options.produceTree;var ownTree=produceTreeOption?(typeof produceTreeOption==="string"?fluid.getGlobalValue(produceTreeOption):produceTreeOption)(that):that.expandProtoTree();var subPanelTree=that.produceSubPanelTrees();var tree={children:ownTree.children.concat(subPanelTree.children)};return tree};fluid.prefs.compositePanel.expandProtoTree=function(that){var expanderOptions=fluid.renderer.modeliseOptions(that.options.expanderOptions,{ELstyle:"${}"},that);var expander=fluid.renderer.makeProtoExpander(expanderOptions,that);return expander(that.options.protoTree||{})};fluid.prefs.compositePanel.produceSubPanelTrees=function(that){var tree={children:[]};fluid.each(that.options.components,(function(options,componentName){var subPanel=that[componentName];if(fluid.prefs.compositePanel.isActivePanel(subPanel)){var expanderOptions=fluid.renderer.modeliseOptions(subPanel.options.expanderOptions,{ELstyle:"${}"},subPanel);var expander=fluid.renderer.makeProtoExpander(expanderOptions,subPanel);var subTree=subPanel.produceTree();subTree=fluid.get(subPanel.options,"rendererFnOptions.noexpand")?subTree:expander(subTree);var rebasedTree=fluid.prefs.compositePanel.rebaseTree(subPanel.msgResolver,that.model,subTree,componentName,subPanel.options.rules);tree.children=tree.children.concat(rebasedTree.children)}}));return tree};fluid.defaults("fluid.prefs.prefsEditorConnections",{gradeNames:["fluid.component"],listeners:{"{fluid.prefs.prefsEditor}.events.onPrefsEditorRefresh":"{fluid.prefs.panel}.refreshView"},strings:{},parentBundle:"{fluid.prefs.prefsEditorLoader}.msgResolver"});fluid.defaults("fluid.prefs.panel.switchAdjuster",{gradeNames:["fluid.prefs.panel"],selectors:{header:".flc-prefsEditor-header",switchContainer:".flc-prefsEditor-switch",label:".flc-prefsEditor-label",description:".flc-prefsEditor-description"},selectorsToIgnore:["header","switchContainer"],components:{switchUI:{type:"fluid.switchUI",container:"{that}.dom.switchContainer",createOnEvent:"afterRender",options:{strings:{on:"{fluid.prefs.panel.switchAdjuster}.msgLookup.switchOn",off:"{fluid.prefs.panel.switchAdjuster}.msgLookup.switchOff"},model:{enabled:"{fluid.prefs.panel.switchAdjuster}.model.value"},attrs:{"aria-labelledby":{expander:{funcName:"fluid.allocateSimpleId",args:["{fluid.prefs.panel.switchAdjuster}.dom.description"]}}}}}},protoTree:{label:{messagekey:"label"},description:{messagekey:"description"}}});fluid.defaults("fluid.prefs.panel.themePicker",{gradeNames:["fluid.prefs.panel"],mergePolicy:{"controlValues.theme":"replace","stringArrayIndex.theme":"replace"},controlValues:{theme:[]},stringArrayIndex:{theme:[]},selectID:"{that}.id",listeners:{"afterRender.style":"{that}.style"},selectors:{themeRow:".flc-prefsEditor-themeRow",themeLabel:".flc-prefsEditor-theme-label",themeInput:".flc-prefsEditor-themeInput",label:".flc-prefsEditor-themePicker-label",description:".flc-prefsEditor-themePicker-descr"},styles:{defaultThemeLabel:"fl-prefsEditor-themePicker-defaultThemeLabel"},repeatingSelectors:["themeRow"],protoTree:{label:{messagekey:"label"},description:{messagekey:"description"},expander:{type:"fluid.renderer.selection.inputs",rowID:"themeRow",labelID:"themeLabel",inputID:"themeInput",selectID:"{that}.options.selectID",tree:{optionnames:"${{that}.msgLookup.theme}",optionlist:"${{that}.options.controlValues.theme}",selection:"${value}"}}},markup:{label:'<span class="fl-preview-A" aria-hidden="true"></span><span class="fl-hidden-accessible">%theme</span><div class="fl-crossout" aria-hidden="true"></div>'},invokers:{style:{funcName:"fluid.prefs.panel.themePicker.style",args:["{that}.dom.themeLabel","{that}.msgLookup.theme","{that}.options.markup.label","{that}.options.controlValues.theme","default","{that}.options.classnameMap.theme","{that}.options.styles.defaultThemeLabel"]}}});fluid.prefs.panel.themePicker.style=function(labels,strings,markup,theme,defaultThemeName,style,defaultLabelStyle){fluid.each(labels,(function(label,index){label=$(label);var themeValue=strings[index];label.html(fluid.stringTemplate(markup,{theme:themeValue}));var labelTheme=theme[index];if(labelTheme===defaultThemeName){label.addClass(defaultLabelStyle)}label.addClass(style[labelTheme])}))};fluid.defaults("fluid.prefs.panel.stepperAdjuster",{gradeNames:["fluid.prefs.panel"],selectors:{header:".flc-prefsEditor-header",textfieldStepperContainer:".flc-prefsEditor-textfieldStepper",label:".flc-prefsEditor-label",descr:".flc-prefsEditor-descr"},selectorsToIgnore:["header","textfieldStepperContainer"],components:{textfieldStepper:{type:"fluid.textfieldStepper",container:"{that}.dom.textfieldStepperContainer",createOnEvent:"afterRender",options:{model:{value:"{fluid.prefs.panel.stepperAdjuster}.model.value",range:{min:"{fluid.prefs.panel.stepperAdjuster}.options.range.min",max:"{fluid.prefs.panel.stepperAdjuster}.options.range.max"},step:"{fluid.prefs.panel.stepperAdjuster}.options.step"},scale:1,strings:{increaseLabel:"{fluid.prefs.panel.stepperAdjuster}.msgLookup.increaseLabel",decreaseLabel:"{fluid.prefs.panel.stepperAdjuster}.msgLookup.decreaseLabel"},attrs:{"aria-labelledby":"{fluid.prefs.panel.stepperAdjuster}.options.panelOptions.labelId"}}}},protoTree:{label:{messagekey:"label",decorators:{attrs:{id:"{that}.options.panelOptions.labelId"}}},descr:{messagekey:"description"}},panelOptions:{labelIdTemplate:"%guid",labelId:{expander:{funcName:"fluid.prefs.panel.stepperAdjuster.setLabelID",args:["{that}.options.panelOptions.labelIdTemplate"]}}}});fluid.prefs.panel.stepperAdjuster.setLabelID=function(template){return fluid.stringTemplate(template,{guid:fluid.allocateGuid()})};fluid.defaults("fluid.prefs.panel.textSize",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.textSize":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"multipleOf"}},panelOptions:{labelIdTemplate:"textSize-label-%guid"}});fluid.defaults("fluid.prefs.panel.textFont",{gradeNames:["fluid.prefs.panel"],preferenceMap:{"fluid.prefs.textFont":{"model.value":"value","controlValues.textFont":"enum","stringArrayIndex.textFont":"enumLabels"}},mergePolicy:{"controlValues.textFont":"replace","stringArrayIndex.textFont":"replace"},selectors:{header:".flc-prefsEditor-text-font-header",textFont:".flc-prefsEditor-text-font",label:".flc-prefsEditor-text-font-label",textFontDescr:".flc-prefsEditor-text-font-descr"},selectorsToIgnore:["header"],protoTree:{label:{messagekey:"textFontLabel"},textFontDescr:{messagekey:"textFontDescr"},textFont:{optionnames:"${{that}.msgLookup.textFont}",optionlist:"${{that}.options.controlValues.textFont}",selection:"${value}",decorators:{type:"fluid",func:"fluid.prefs.selectDecorator",options:{styles:"{that}.options.classnameMap.textFont"}}}},classnameMap:null});fluid.defaults("fluid.prefs.panel.lineSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.lineSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"multipleOf"}},panelOptions:{labelIdTemplate:"lineSpace-label-%guid"}});fluid.defaults("fluid.prefs.panel.contrast",{gradeNames:["fluid.prefs.panel.themePicker"],preferenceMap:{"fluid.prefs.contrast":{"model.value":"value","controlValues.theme":"enum","stringArrayIndex.theme":"enumLabels"}},listeners:{"afterRender.style":"{that}.style"},selectors:{header:".flc-prefsEditor-contrast-header",themeRow:".flc-prefsEditor-themeRow",themeLabel:".flc-prefsEditor-theme-label",themeInput:".flc-prefsEditor-themeInput",label:".flc-prefsEditor-themePicker-label",contrastDescr:".flc-prefsEditor-themePicker-descr"},selectorsToIgnore:["header"],styles:{defaultThemeLabel:"fl-prefsEditor-themePicker-defaultThemeLabel"}});fluid.defaults("fluid.prefs.panel.layoutControls",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.tableOfContents":{"model.value":"value"}}});fluid.defaults("fluid.prefs.panel.enhanceInputs",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.enhanceInputs":{"model.value":"value"}}});fluid.defaults("fluid.prefs.selectDecorator",{gradeNames:["fluid.viewComponent"],listeners:{"onCreate.decorateOptions":"fluid.prefs.selectDecorator.decorateOptions"},styles:{preview:"fl-preview-theme"}});fluid.prefs.selectDecorator.decorateOptions=function(that){fluid.each($("option",that.container),(function(option){var styles=that.options.styles;$(option).addClass(styles.preview+" "+styles[fluid.value(option)])}))}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.captions",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.captions":{"model.value":"value"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.letterSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.letterSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"multipleOf"}},panelOptions:{labelIdTemplate:"letterSpace-label-%guid"}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.speak",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.speak":{"model.value":"value"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.syllabification",{gradeNames:["fluid.prefs.panel.switchAdjuster"],preferenceMap:{"fluid.prefs.syllabification":{"model.value":"value"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.localization",{gradeNames:["fluid.prefs.panel"],preferenceMap:{"fluid.prefs.localization":{"model.value":"value","controlValues.localization":"enum","stringArrayIndex.localization":"enumLabels"}},mergePolicy:{"controlValues.localization":"replace","stringArrayIndex.localization":"replace"},selectors:{header:".flc-prefsEditor-localization-header",localization:".flc-prefsEditor-localization",label:".flc-prefsEditor-localization-label",localizationDescr:".flc-prefsEditor-localization-descr"},selectorsToIgnore:["header"],protoTree:{label:{messagekey:"label"},localizationDescr:{messagekey:"description"},localization:{optionnames:"${{that}.msgLookup.localization}",optionlist:"${{that}.options.controlValues.localization}",selection:"${value}"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.panel.wordSpace",{gradeNames:["fluid.prefs.panel.stepperAdjuster"],preferenceMap:{"fluid.prefs.wordSpace":{"model.value":"value","range.min":"minimum","range.max":"maximum",step:"multipleOf"}},panelOptions:{labelIdTemplate:"wordSpace-label-%guid"}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor",{gradeNames:["fluid.modelComponent"]});fluid.defaults("fluid.prefs.enactor.styleElements",{gradeNames:["fluid.prefs.enactor"],cssClass:null,elementsToStyle:null,invokers:{applyStyle:{funcName:"fluid.prefs.enactor.styleElements.applyStyle",args:["{arguments}.0","{arguments}.1"]},resetStyle:{funcName:"fluid.prefs.enactor.styleElements.resetStyle",args:["{arguments}.0","{arguments}.1"]},handleStyle:{funcName:"fluid.prefs.enactor.styleElements.handleStyle",args:["{arguments}.0","{that}.options.elementsToStyle","{that}.options.cssClass","{that}.applyStyle","{that}.resetStyle"]}},modelListeners:{value:{listener:"{that}.handleStyle",args:["{change}.value"],namespace:"handleStyle"}}});fluid.prefs.enactor.styleElements.applyStyle=function(elements,cssClass){elements.addClass(cssClass)};fluid.prefs.enactor.styleElements.resetStyle=function(elements,cssClass){$(elements,"."+cssClass).addBack().removeClass(cssClass)};fluid.prefs.enactor.styleElements.handleStyle=function(value,elements,cssClass,applyStyleFunc,resetStyleFunc){var func=value?applyStyleFunc:resetStyleFunc;func(elements,cssClass)};fluid.defaults("fluid.prefs.enactor.classSwapper",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],classes:{},invokers:{clearClasses:{funcName:"fluid.prefs.enactor.classSwapper.clearClasses",args:["{that}.container","{that}.classStr"]},swap:{funcName:"fluid.prefs.enactor.classSwapper.swap",args:["{arguments}.0","{that}","{that}.clearClasses"]}},modelListeners:{value:{listener:"{that}.swap",args:["{change}.value"],namespace:"swapClass"}},members:{classStr:{expander:{func:"fluid.prefs.enactor.classSwapper.joinClassStr",args:"{that}.options.classes"}}}});fluid.prefs.enactor.classSwapper.clearClasses=function(container,classStr){container.removeClass(classStr)};fluid.prefs.enactor.classSwapper.swap=function(value,that,clearClassesFunc){clearClassesFunc();that.container.addClass(that.options.classes[value])};fluid.prefs.enactor.classSwapper.joinClassStr=function(classes){var classStr="";fluid.each(classes,(function(oneClassName){if(oneClassName){classStr+=classStr?" "+oneClassName:oneClassName}}));return classStr};fluid.defaults("fluid.prefs.enactor.enhanceInputs",{gradeNames:["fluid.prefs.enactor.styleElements","fluid.viewComponent"],preferenceMap:{"fluid.prefs.enhanceInputs":{"model.value":"value"}},cssClass:null,elementsToStyle:"{that}.container"});fluid.defaults("fluid.prefs.enactor.textFont",{gradeNames:["fluid.prefs.enactor.classSwapper"],preferenceMap:{"fluid.prefs.textFont":{"model.value":"value"}}});fluid.defaults("fluid.prefs.enactor.contrast",{gradeNames:["fluid.prefs.enactor.classSwapper"],preferenceMap:{"fluid.prefs.contrast":{"model.value":"value"}}});fluid.prefs.enactor.getTextSizeInPx=function(container,fontSizeMap){var fontSize=container.css("font-size");if(fontSizeMap[fontSize]){fontSize=fontSizeMap[fontSize]}return parseFloat(fontSize)};fluid.defaults("fluid.prefs.enactor.textRelatedSizer",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],fontSizeMap:{},invokers:{set:"fluid.notImplemented",getTextSizeInPx:{funcName:"fluid.prefs.enactor.getTextSizeInPx",args:["{that}.container","{that}.options.fontSizeMap"]}},modelListeners:{value:{listener:"{that}.set",args:["{change}.value"],namespace:"setAdaptation"}}});fluid.defaults("fluid.prefs.enactor.spacingSetter",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],members:{originalSpacing:{expander:{func:"{that}.getSpacing"}}},cssProp:"",invokers:{set:{funcName:"fluid.prefs.enactor.spacingSetter.set",args:["{that}","{that}.options.cssProp","{arguments}.0"]},getSpacing:{funcName:"fluid.prefs.enactor.spacingSetter.getSpacing",args:["{that}","{that}.options.cssProp","{that}.getTextSizeInPx"]}},modelListeners:{unit:{listener:"{that}.set",args:["{change}.value"],namespace:"setAdaptation"},value:{listener:"fluid.identity",namespace:"setAdaptation"}},modelRelay:{target:"unit",namespace:"toUnit",singleTransform:{type:"fluid.transforms.round",scale:1,input:{transform:{type:"fluid.transforms.linearScale",offset:-1,input:"{that}.model.value"}}}}});fluid.prefs.enactor.spacingSetter.getSpacing=function(that,cssProp,getTextSizeFn){var current=parseFloat(that.container.css(cssProp));var textSize=getTextSizeFn();return fluid.roundToDecimal(current/textSize,2)};fluid.prefs.enactor.spacingSetter.set=function(that,cssProp,units){var targetSize=that.originalSpacing;if(units){targetSize=targetSize+units}var spacingSetter=targetSize?fluid.roundToDecimal(targetSize,2)+"em":"";that.container.css(cssProp,spacingSetter)};fluid.defaults("fluid.prefs.enactor.textSize",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],preferenceMap:{"fluid.prefs.textSize":{"model.value":"value"}},members:{root:{expander:{this:"{that}.container",method:"closest",args:["html"]}}},invokers:{set:{funcName:"fluid.prefs.enactor.textSize.set",args:["{arguments}.0","{that}","{that}.getTextSizeInPx"]},getTextSizeInPx:{args:["{that}.root","{that}.options.fontSizeMap"]}}});fluid.prefs.enactor.textSize.set=function(times,that,getTextSizeInPxFunc){times=times||1;if(!that.initialSize){that.initialSize=getTextSizeInPxFunc()}if(that.initialSize){var targetSize=times*that.initialSize;that.root.css("font-size",targetSize+"px")}};fluid.defaults("fluid.prefs.enactor.lineSpace",{gradeNames:["fluid.prefs.enactor.textRelatedSizer"],preferenceMap:{"fluid.prefs.lineSpace":{"model.value":"value"}},invokers:{set:{funcName:"fluid.prefs.enactor.lineSpace.set",args:["{that}","{arguments}.0"]},getLineHeight:{funcName:"fluid.prefs.enactor.lineSpace.getLineHeight",args:"{that}.container"},getLineHeightMultiplier:{funcName:"fluid.prefs.enactor.lineSpace.getLineHeightMultiplier",args:[{expander:{func:"{that}.getLineHeight"}},{expander:{func:"{that}.getTextSizeInPx"}}]}}});fluid.prefs.enactor.lineSpace.getLineHeight=function(container){return container.css("line-height")};fluid.prefs.enactor.lineSpace.getLineHeightMultiplier=function(lineHeight,fontSize){if(!lineHeight){return 0}if(lineHeight==="normal"){return 1.2}if(lineHeight.match(/[0-9]$/)){return Number(lineHeight)}return fluid.roundToDecimal(parseFloat(lineHeight)/fontSize,2)};fluid.prefs.enactor.lineSpace.set=function(that,times){if(!that.initialSize){that.initialSize=that.getLineHeight();that.lineHeightMultiplier=that.getLineHeightMultiplier()}if(that.lineHeightMultiplier){var targetLineSpace=that.initialSize==="normal"&×===1?that.initialSize:times*that.lineHeightMultiplier;that.container.css("line-height",targetLineSpace)}};fluid.defaults("fluid.prefs.enactor.tableOfContents",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.tableOfContents":{"model.toc":"value"}},tocTemplate:null,tocMessage:null,components:{messageLoader:{type:"fluid.resourceLoader",options:{resourceOptions:{dataType:"json"},events:{onResourcesLoaded:"{fluid.prefs.enactor.tableOfContents}.events.onMessagesLoaded"}}},tableOfContents:{type:"fluid.tableOfContents",container:"{fluid.prefs.enactor.tableOfContents}.container",createOnEvent:"onCreateTOCReady",options:{listeners:{"afterRender.boilAfterTocRender":"{fluid.prefs.enactor.tableOfContents}.events.afterTocRender"},strings:{tocHeader:"{messageLoader}.resources.tocMessage.resourceText.tocHeader"}}}},invokers:{applyToc:{funcName:"fluid.prefs.enactor.tableOfContents.applyToc",args:["{arguments}.0","{that}"]}},events:{afterTocRender:null,onCreateTOC:null,onMessagesLoaded:null,onCreateTOCReady:{events:{onCreateTOC:"onCreateTOC",onMessagesLoaded:"onMessagesLoaded"}}},modelListeners:{toc:{listener:"{that}.applyToc",args:["{change}.value"],namespace:"toggleToc"}},distributeOptions:{"tocEnactor.tableOfContents.ignoreForToC":{source:"{that}.options.ignoreForToC",target:"{that tableOfContents}.options.ignoreForToC"},"tocEnactor.tableOfContents.tocTemplate":{source:"{that}.options.tocTemplate",target:"{that > tableOfContents > levels}.options.resources.template.url"},"tocEnactor.messageLoader.tocMessage":{source:"{that}.options.tocMessage",target:"{that messageLoader}.options.resources.tocMessage"}}});fluid.prefs.enactor.tableOfContents.applyToc=function(value,that){if(value){if(that.tableOfContents){that.tableOfContents.show()}else{that.events.onCreateTOC.fire()}}else if(that.tableOfContents){that.tableOfContents.hide()}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.captions",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.captions":{"model.enabled":"value"}},events:{onVideoElementLocated:null},selectors:{videos:'iframe[src^="https://www.youtube.com/embed/"]'},model:{enabled:false},components:{ytAPI:{type:"fluid.prefs.enactor.captions.ytAPI"}},dynamicComponents:{player:{type:"fluid.prefs.enactor.captions.youTubePlayer",createOnEvent:"onVideoElementLocated",container:"{arguments}.0",options:{model:{captions:"{captions}.model.enabled"}}}},listeners:{"onCreate.initPlayers":"{that}.initPlayers"},invokers:{initPlayers:{funcName:"fluid.prefs.enactor.captions.initPlayers",args:["{that}","{ytAPI}.notifyWhenLoaded","{that}.dom.videos"]}}});fluid.prefs.enactor.captions.initPlayers=function(that,getYtApi,videos){var promise=fluid.promise();var ytAPINotice=getYtApi();promise.then((function(){$(videos).each((function(index,elm){that.events.onVideoElementLocated.fire($(elm))}))}));fluid.promise.follow(ytAPINotice,promise);return promise};fluid.defaults("fluid.prefs.enactor.captions.ytAPI",{gradeNames:["fluid.component","fluid.resolveRootSingle"],singleRootType:"fluid.prefs.enactor.captions.window",events:{onYouTubeAPILoaded:null},members:{global:window},invokers:{notifyWhenLoaded:{funcName:"fluid.prefs.enactor.captions.ytAPI.notifyWhenLoaded",args:["{that}"]}}});fluid.prefs.enactor.captions.ytAPI.notifyWhenLoaded=function(that){var promise=fluid.promise();promise.then((function(){that.events.onYouTubeAPILoaded.fire()}),(function(error){fluid.log(fluid.logLevel.WARN,error)}));if(fluid.get(window,["YT","Player"])){promise.resolve()}else{fluid.set(that.global,"onYouTubeIframeAPIReady",promise.resolve)}return promise};fluid.defaults("fluid.prefs.enactor.captions.youTubePlayer",{gradeNames:["fluid.viewComponent"],events:{onReady:null,onStateChange:null,onPlaybackQualityChange:null,onPlaybackRateChange:null,onError:null,onApiChange:null},model:{captions:false,track:{}},members:{player:{expander:{funcName:"fluid.prefs.enactor.captions.youTubePlayer.initYTPlayer",args:["{that}"]}},tracklist:[]},invokers:{applyCaptions:{funcName:"fluid.prefs.enactor.captions.youTubePlayer.applyCaptions",args:["{that}.player","{that}.model.track","{that}.model.captions"]}},modelListeners:{setCaptions:{listener:"{that}.applyCaptions",path:["captions","track"],excludeSource:"init"}},listeners:{"onApiChange.prepTrack":{listener:"fluid.prefs.enactor.captions.youTubePlayer.prepTrack",args:["{that}","{that}.player"]},"onApiChange.applyCaptions":{listener:"{that}.applyCaptions",priority:"after:prepTrack"}}});fluid.prefs.enactor.captions.youTubePlayer.enableJSAPI=function(videoElm){videoElm=$(videoElm);var url=new URL(videoElm.attr("src"));url.searchParams.set("enablejsapi",1);videoElm.attr("src",url.toString())};fluid.prefs.enactor.captions.youTubePlayer.initYTPlayer=function(that){var id=fluid.allocateSimpleId(that.container);fluid.prefs.enactor.captions.youTubePlayer.enableJSAPI(that.container);return new YT.Player(id,{events:{onReady:that.events.onReady.fire,onStateChange:that.events.onStateChange.fire,onPlaybackQualityChange:that.events.onPlaybackQualityChange.fire,onPlaybackRateChange:that.events.onPlaybackRateChange.fire,onError:that.events.onError.fire,onApiChange:that.events.onApiChange.fire}})};fluid.prefs.enactor.captions.youTubePlayer.applyCaptions=function(player,track,state){if(player.loadModule){if(state){player.loadModule("captions");player.setOption("captions","track",track)}else{player.unloadModule("captions")}}};fluid.prefs.enactor.captions.youTubePlayer.prepTrack=function(that,player){player.loadModule("captions");var tracklist=player.getOption("captions","tracklist");if(tracklist.length&&!that.tracklist.length){that.tracklist=tracklist;that.applier.change("track",tracklist[0],"ADD","prepTrack")}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.letterSpace",{gradeNames:["fluid.prefs.enactor.spacingSetter"],preferenceMap:{"fluid.prefs.letterSpace":{"model.value":"value"}},cssProp:"letter-spacing"})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.selfVoicing",{gradeNames:["fluid.prefs.enactor","fluid.viewComponent"],preferenceMap:{"fluid.prefs.speak":{"model.enabled":"value"}},selectors:{controller:".flc-prefs-selfVoicingWidget"},events:{onInitOrator:null},modelListeners:{enabled:{funcName:"fluid.prefs.enactor.selfVoicing.initOrator",args:["{that}","{change}.value"],namespace:"initOrator"}},components:{orator:{type:"fluid.orator",createOnEvent:"onInitOrator",container:"{fluid.prefs.enactor.selfVoicing}.container",options:{model:{enabled:"{selfVoicing}.model.enabled"},controller:{parentContainer:"{fluid.prefs.enactor.selfVoicing}.dom.controller"}}}},distributeOptions:[{source:"{that}.options.orator",target:"{that > orator}.options",removeSource:true,namespace:"oratorOpts"}]});fluid.prefs.enactor.selfVoicing.initOrator=function(that,enabled){if(enabled&&!that.orator){that.events.onInitOrator.fire()}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.syllabification",{gradeNames:["fluid.prefs.enactor","fluid.prefs.enactor.syllabification.patterns","fluid.viewComponent"],preferenceMap:{"fluid.prefs.syllabification":{"model.enabled":"value"}},selectors:{separator:".flc-syllabification-separator",softHyphenPlaceholder:".flc-syllabification-softHyphenPlaceholder"},strings:{languageUnavailable:"Syllabification not available for %lang",patternLoadError:"The pattern file %src could not be loaded. %errorMsg"},markup:{separator:'<span class="flc-syllabification-separator fl-syllabification-separator"></span>',softHyphenPlaceholder:'<span class="flc-syllabification-softHyphenPlaceholder fl-syllabification-softHyphenPlaceholder"></span>'},model:{enabled:false},events:{afterParse:null,afterSyllabification:null,onParsedTextNode:null,onNodeAdded:null,onError:null},listeners:{"afterParse.waitForHyphenators":{listener:"fluid.prefs.enactor.syllabification.waitForHyphenators",args:["{that}"]},"onParsedTextNode.syllabify":{listener:"{that}.apply",args:["{arguments}.0.node","{arguments}.0.lang"]},"onNodeAdded.syllabify":{listener:"{that}.parse",args:["{arguments}.0","{that}.model.enabled"]}},components:{parser:{type:"fluid.textNodeParser",options:{listeners:{"afterParse.boil":"{syllabification}.events.afterParse","onParsedTextNode.boil":"{syllabification}.events.onParsedTextNode"},invokers:{hasTextToRead:{funcName:"fluid.textNodeParser.hasTextToRead",args:["{arguments}.0",true]}}}},observer:{type:"fluid.mutationObserver",container:"{that}.container",options:{defaultObserveConfig:{attributes:false},modelListeners:{"{syllabification}.model.enabled":{funcName:"fluid.prefs.enactor.syllabification.disconnectObserver",priority:"before:setPresentation",args:["{that}","{change}.value"],namespace:"disconnectObserver"}},listeners:{"onNodeAdded.boil":"{syllabification}.events.onNodeAdded","{syllabification}.events.afterSyllabification":{listener:"{that}.observe",namespace:"enableObserver"}}}}},members:{hyphenators:{}},modelListeners:{enabled:{listener:"{that}.setPresentation",args:["{that}.container","{change}.value"],namespace:"setPresentation"}},invokers:{apply:{funcName:"fluid.prefs.enactor.syllabification.syllabify",args:["{that}","{arguments}.0","{arguments}.1"]},remove:{funcName:"fluid.prefs.enactor.syllabification.removeSyllabification",args:["{that}"]},setPresentation:{funcName:"fluid.prefs.enactor.syllabification.setPresentation",args:["{that}","{arguments}.0","{arguments}.1"]},parse:{funcName:"fluid.prefs.enactor.syllabification.parse",args:["{that}","{arguments}.0"]},createHyphenator:{funcName:"fluid.prefs.enactor.syllabification.createHyphenator",args:["{that}","{arguments}.0","{arguments}.1"]},getHyphenator:{funcName:"fluid.prefs.enactor.syllabification.getHyphenator",args:["{that}","{arguments}.0"]},getPattern:"fluid.prefs.enactor.syllabification.getPattern",hyphenateNode:{funcName:"fluid.prefs.enactor.syllabification.hyphenateNode",args:["{arguments}.0","{arguments}.1","{that}.options.markup.separator","{that}.options.markup.softHyphenPlaceholder"]},injectScript:{this:"$",method:"ajax",args:[{url:"{arguments}.0",dataType:"script",cache:true}]}}});fluid.prefs.enactor.syllabification.disconnectObserver=function(that,state){if(!state){that.disconnect()}};fluid.prefs.enactor.syllabification.waitForHyphenators=function(that){var hyphenatorPromises=fluid.values(that.hyphenators);var promise=fluid.promise.sequence(hyphenatorPromises);promise.then((function(){that.events.afterSyllabification.fire()}),that.events.onError.fire);return promise};fluid.prefs.enactor.syllabification.parse=function(that,elm){elm=fluid.unwrap(elm);elm=elm.nodeType===Node.ELEMENT_NODE?$(elm):$(elm.parentNode);that.parser.parse(elm)};fluid.prefs.enactor.syllabification.createHyphenator=function(that,pattern,lang){var promise=fluid.promise();var globalPath=["Hypher","languages",lang];var hyphenator=fluid.getGlobalValue(globalPath);if(hyphenator){promise.resolve(hyphenator);return promise}var src=fluid.stringTemplate(pattern,that.options.terms);var injectPromise=that.injectScript(src);injectPromise.then((function(){hyphenator=fluid.getGlobalValue(globalPath);promise.resolve(hyphenator)}),(function(error){var errorInfo={src:src,errorMsg:typeof error==="string"?error:""};var errorMessage=fluid.stringTemplate(that.options.strings.patternLoadError,errorInfo);fluid.log(fluid.logLevel.WARN,errorMessage,error);that.events.onError.fire(errorMessage,error);promise.resolve()}));return promise};fluid.prefs.enactor.syllabification.getPattern=function(lang,patterns){var src=patterns[lang];if(!src){lang=lang.split("-")[0];src=patterns[lang]}return{lang:lang,src:src}};fluid.prefs.enactor.syllabification.getHyphenator=function(that,lang){var promise=fluid.promise();var hyphenatorPromise;if(!lang){promise.resolve();return promise}var pattern=that.getPattern(lang.toLowerCase(),that.options.patterns);if(!pattern.src){hyphenatorPromise=promise;promise.resolve();return promise}if(that.hyphenators[pattern.src]){return that.hyphenators[pattern.src]}hyphenatorPromise=that.createHyphenator(pattern.src,pattern.lang);fluid.promise.follow(hyphenatorPromise,promise);that.hyphenators[pattern.src]=hyphenatorPromise;return promise};fluid.prefs.enactor.syllabification.syllabify=function(that,node,lang){var hyphenatorPromise=that.getHyphenator(lang);hyphenatorPromise.then((function(hyphenator){that.hyphenateNode(hyphenator,node)}))};fluid.prefs.enactor.syllabification.insertIntoTextNode=function(node,toInsert,position){node=node.splitText(position);node.parentNode.insertBefore(toInsert,node);return node};fluid.prefs.enactor.syllabification.hyphenateNode=function(hyphenator,node,separatorMarkup,softHyphenPlaceholderMarkup){if(!hyphenator||!node.textContent){return}var softHyphen="";var hyphenated=hyphenator.hyphenateText(node.textContent);var segs=hyphenated.split(softHyphen);for(var i=0;i<segs.length;i++){if(node.textContent.startsWith(softHyphen)){var placeholder=$(softHyphenPlaceholderMarkup)[0];var newNode=fluid.prefs.enactor.syllabification.insertIntoTextNode(node,placeholder,1);node.remove();node=newNode}if(i<segs.length-1){var separator=$(separatorMarkup)[0];node=fluid.prefs.enactor.syllabification.insertIntoTextNode(node,separator,segs[i].length)}}};fluid.prefs.enactor.syllabification.removeSyllabification=function(that){that.locate("separator").each((function(index,elm){var parent=elm.parentNode;$(elm).remove();parent.normalize()}));that.locate("softHyphenPlaceholder").each((function(index,elm){var parent=elm.parentNode;elm.replaceWith(document.createTextNode(""));parent.normalize()}))};fluid.prefs.enactor.syllabification.setPresentation=function(that,elm,state){if(state){that.parse(elm)}else{that.remove()}};fluid.defaults("fluid.prefs.enactor.syllabification.patterns",{terms:{patternPrefix:"../../../lib/hypher/patterns"},patterns:{be:"%patternPrefix/bg.js",bn:"%patternPrefix/bn.js",ca:"%patternPrefix/ca.js",cs:"%patternPrefix/cs.js",da:"%patternPrefix/da.js",de:"%patternPrefix/de.js",el:"%patternPrefix/el-monoton.js","el-monoton":"%patternPrefix/el-monoton.js","el-polyton":"%patternPrefix/el-polyton.js",en:"%patternPrefix/en-us.js","en-gb":"%patternPrefix/en-gb.js","en-us":"%patternPrefix/en-us.js",es:"%patternPrefix/es.js",fi:"%patternPrefix/fi.js",fr:"%patternPrefix/fr.js",grc:"%patternPrefix/grc.js",gu:"%patternPrefix/gu.js",hi:"%patternPrefix/hi.js",hu:"%patternPrefix/hu.js",hy:"%patternPrefix/hy.js",is:"%patternPrefix/is.js",it:"%patternPrefix/it.js",kn:"%patternPrefix/kn.js",la:"%patternPrefix/la.js",lt:"%patternPrefix/lt.js",lv:"%patternPrefix/lv.js",ml:"%patternPrefix/ml.js",nb:"%patternPrefix/nb-no.js","nb-no":"%patternPrefix/nb-no.js",no:"%patternPrefix/nb-no.js",nl:"%patternPrefix/nl.js",or:"%patternPrefix/or.js",pa:"%patternPrefix/pa.js",pl:"%patternPrefix/pl.js",pt:"%patternPrefix/pt.js",ru:"%patternPrefix/ru.js",sk:"%patternPrefix/sk.js",sl:"%patternPrefix/sl.js",sv:"%patternPrefix/sv.js",ta:"%patternPrefix/ta.js",te:"%patternPrefix/te.js",tr:"%patternPrefix/tr.js",uk:"%patternPrefix/uk.js"}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.localization",{gradeNames:["fluid.prefs.enactor","fluid.contextAware","fluid.resolveRoot"],preferenceMap:{"fluid.prefs.localization":{"model.lang":"value"}},contextAwareness:{localeChange:{checks:{inPanel:{contextValue:"{iframeRenderer}.id",gradeNames:"fluid.prefs.enactor.localization.inPanel"},urlPath:{contextValue:"{localization}.options.localizationScheme",equals:"urlPath",gradeNames:"fluid.prefs.enactor.localization.urlPathLocale",priority:"after:inPanel"}}}}});fluid.defaults("fluid.prefs.enactor.localization.urlPathLocale",{langMap:{},langSegValues:{expander:{funcName:"fluid.values",args:["{that}.options.langMap"]}},modelRelay:[{target:"urlLangSeg",singleTransform:{type:"fluid.transforms.valueMapper",defaultInput:"{that}.model.lang",match:"{that}.options.langMap"}}],modelListeners:{urlLangSeg:{funcName:"{that}.updatePathname",args:["{change}.value"],namespace:"updateURLPathname"}},invokers:{updatePathname:{funcName:"fluid.prefs.enactor.localization.urlPathLocale.updatePathname",args:["{that}","{arguments}.0","{that}.options.langSegValues","{that}.options.langSegIndex"]},getPathname:"fluid.prefs.enactor.localization.urlPathLocale.getPathname",setPathname:"fluid.prefs.enactor.localization.urlPathLocale.setPathname"}});fluid.prefs.enactor.localization.urlPathLocale.getPathname=function(){return location.pathname};fluid.prefs.enactor.localization.urlPathLocale.setPathname=function(pathname){location.pathname=pathname};fluid.prefs.enactor.localization.urlPathLocale.updatePathname=function(that,urlLangSeg,langSegValues,langSegIndex){if(fluid.isValue(urlLangSeg)){langSegIndex=langSegIndex||1;var pathname=that.getPathname();var pathSegs=pathname.split("/");var currentLang=pathSegs[langSegIndex];var hasLang=!!currentLang&&langSegValues.indexOf(currentLang)>=0;if(hasLang){if(urlLangSeg){pathSegs[langSegIndex]=urlLangSeg}else{if(langSegIndex===pathSegs.length-1){pathSegs.pop()}else{pathSegs.splice(langSegIndex,1)}}}else if(urlLangSeg){pathSegs.splice(langSegIndex,0,urlLangSeg)}var newPathname=pathSegs.join("/");if(newPathname!==pathname){that.setPathname(newPathname)}}}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.enactor.wordSpace",{gradeNames:["fluid.prefs.enactor.spacingSetter"],preferenceMap:{"fluid.prefs.wordSpace":{"model.value":"value"}},cssProp:"word-spacing"})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.initialModel.starter",{gradeNames:["fluid.prefs.initialModel"],members:{initialModel:{preferences:{textFont:"default",theme:"default",textSize:1,lineSpace:1,toc:false,inputs:false}}}});fluid.defaults("fluid.uiEnhancer.cssClassEnhancerBase",{gradeNames:["fluid.component"],classnameMap:{textFont:{default:"",times:"fl-font-times",comic:"fl-font-comic-sans",arial:"fl-font-arial",verdana:"fl-font-verdana","open-dyslexic":"fl-font-open-dyslexic"},theme:{default:"fl-theme-prefsEditor-default",bw:"fl-theme-bw",wb:"fl-theme-wb",by:"fl-theme-by",yb:"fl-theme-yb",lgdg:"fl-theme-lgdg",gd:"fl-theme-gd",gw:"fl-theme-gw",bbr:"fl-theme-bbr"},inputs:"fl-input-enhanced"}});fluid.defaults("fluid.uiEnhancer.browserTextEnhancerBase",{gradeNames:["fluid.component"],fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}});fluid.defaults("fluid.uiEnhancer.starterEnactors",{gradeNames:["fluid.uiEnhancer","fluid.uiEnhancer.cssClassEnhancerBase","fluid.uiEnhancer.browserTextEnhancerBase"],model:"{fluid.prefs.initialModel}.initialModel.preferences",components:{textSize:{type:"fluid.prefs.enactor.textSize",container:"{uiEnhancer}.container",options:{fontSizeMap:"{uiEnhancer}.options.fontSizeMap",model:{value:"{uiEnhancer}.model.textSize"}}},textFont:{type:"fluid.prefs.enactor.textFont",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.textFont",model:{value:"{uiEnhancer}.model.textFont"}}},lineSpace:{type:"fluid.prefs.enactor.lineSpace",container:"{uiEnhancer}.container",options:{fontSizeMap:"{uiEnhancer}.options.fontSizeMap",model:{value:"{uiEnhancer}.model.lineSpace"}}},contrast:{type:"fluid.prefs.enactor.contrast",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.theme",model:{value:"{uiEnhancer}.model.theme"}}},enhanceInputs:{type:"fluid.prefs.enactor.enhanceInputs",container:"{uiEnhancer}.container",options:{cssClass:"{uiEnhancer}.options.classnameMap.inputs",model:{value:"{uiEnhancer}.model.inputs"}}},tableOfContents:{type:"fluid.prefs.enactor.tableOfContents",container:"{uiEnhancer}.container",options:{tocTemplate:"{uiEnhancer}.options.tocTemplate",tocMessage:"{uiEnhancer}.options.tocMessage",model:{toc:"{uiEnhancer}.model.toc"}}}}});fluid.defaults("fluid.prefs.starterPanels",{gradeNames:["fluid.prefs.prefsEditor"],selectors:{textSize:".flc-prefsEditor-text-size",textFont:".flc-prefsEditor-text-font",lineSpace:".flc-prefsEditor-line-space",contrast:".flc-prefsEditor-contrast",layoutControls:".flc-prefsEditor-layout-controls",enhanceInputs:".flc-prefsEditor-enhanceInputs"},components:{textSize:{type:"fluid.prefs.panel.textSize",container:"{prefsEditor}.dom.textSize",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.textSize"},messageBase:"{messageLoader}.resources.textSize.resourceText",resources:{template:"{templateLoader}.resources.textSize"},step:.1,range:{min:1,max:2}}},lineSpace:{type:"fluid.prefs.panel.lineSpace",container:"{prefsEditor}.dom.lineSpace",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.lineSpace"},messageBase:"{messageLoader}.resources.lineSpace.resourceText",resources:{template:"{templateLoader}.resources.lineSpace"},step:.1,range:{min:1,max:2}}},textFont:{type:"fluid.prefs.panel.textFont",container:"{prefsEditor}.dom.textFont",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",classnameMap:"{uiEnhancer}.options.classnameMap",model:{value:"{prefsEditor}.model.preferences.textFont"},messageBase:"{messageLoader}.resources.textFont.resourceText",resources:{template:"{templateLoader}.resources.textFont"},stringArrayIndex:{textFont:["textFont-default","textFont-times","textFont-comic","textFont-arial","textFont-verdana","textFont-open-dyslexic"]},controlValues:{textFont:["default","times","comic","arial","verdana","open-dyslexic"]}}},contrast:{type:"fluid.prefs.panel.contrast",container:"{prefsEditor}.dom.contrast",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",classnameMap:"{uiEnhancer}.options.classnameMap",model:{value:"{prefsEditor}.model.preferences.theme"},messageBase:"{messageLoader}.resources.contrast.resourceText",resources:{template:"{templateLoader}.resources.contrast"},stringArrayIndex:{theme:["contrast-default","contrast-bw","contrast-wb","contrast-by","contrast-yb","contrast-lgdg","contrast-gw","contrast-gd","contrast-bbr"]},controlValues:{theme:["default","bw","wb","by","yb","lgdg","gw","gd","bbr"]}}},layoutControls:{type:"fluid.prefs.panel.layoutControls",container:"{prefsEditor}.dom.layoutControls",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.toc"},messageBase:"{messageLoader}.resources.layoutControls.resourceText",resources:{template:"{templateLoader}.resources.layoutControls"}}},enhanceInputs:{type:"fluid.prefs.panel.enhanceInputs",container:"{prefsEditor}.dom.enhanceInputs",createOnEvent:"onPrefsEditorMarkupReady",options:{gradeNames:"fluid.prefs.prefsEditorConnections",model:{value:"{prefsEditor}.model.preferences.inputs"},messageBase:"{messageLoader}.resources.enhanceInputs.resourceText",resources:{template:"{templateLoader}.resources.enhanceInputs"}}}}});fluid.defaults("fluid.prefs.starterTemplateLoader",{gradeNames:["fluid.resourceLoader"],resources:{textSize:"%templatePrefix/PrefsEditorTemplate-textSize.html",lineSpace:"%templatePrefix/PrefsEditorTemplate-lineSpace.html",textFont:"%templatePrefix/PrefsEditorTemplate-textFont.html",contrast:"%templatePrefix/PrefsEditorTemplate-contrast.html",layoutControls:"%templatePrefix/PrefsEditorTemplate-layout.html",enhanceInputs:"%templatePrefix/PrefsEditorTemplate-enhanceInputs.html"}});fluid.defaults("fluid.prefs.starterSeparatedPanelTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/SeparatedPanelPrefsEditor.html"}});fluid.defaults("fluid.prefs.starterFullPreviewTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/FullPreviewPrefsEditor.html"}});fluid.defaults("fluid.prefs.starterFullNoPreviewTemplateLoader",{gradeNames:["fluid.prefs.starterTemplateLoader"],resources:{prefsEditor:"%templatePrefix/FullNoPreviewPrefsEditor.html"}});fluid.defaults("fluid.prefs.starterMessageLoader",{gradeNames:["fluid.resourceLoader"],resources:{prefsEditor:"%messagePrefix/prefsEditor.json",textSize:"%messagePrefix/textSize.json",textFont:"%messagePrefix/textFont.json",lineSpace:"%messagePrefix/lineSpace.json",contrast:"%messagePrefix/contrast.json",layoutControls:"%messagePrefix/tableOfContents.json",enhanceInputs:"%messagePrefix/enhanceInputs.json"}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.arrowScrolling",{gradeNames:["fluid.modelComponent"],selectors:{scrollContainer:".flc-prefsEditor-scrollContainer"},onScrollDelay:100,model:{},events:{beforeReset:null,onScroll:null},modelRelay:{target:"panelIndex",forward:{excludeSource:"init"},namespace:"limitPanelIndex",singleTransform:{type:"fluid.transforms.limitRange",input:"{that}.model.panelIndex",min:0,max:"{that}.model.panelMaxIndex"}},modelListeners:{panelIndex:{listener:"fluid.prefs.arrowScrolling.scrollToPanel",args:["{that}","{change}.value"],excludeSource:["scrollEvent"],namespace:"scrollToPanel"}},listeners:{"onReady.scrollEvent":{this:"{that}.dom.scrollContainer",method:"on",args:["scroll",{expander:{func:"fluid.debounce",args:["{that}.events.onScroll.fire","{that}.options.onScrollDelay"]}}]},"onReady.windowResize":{this:window,method:"addEventListener",args:["resize","{that}.events.onSignificantDOMChange.fire"]},"onDestroy.removeWindowResize":{this:window,method:"removeEventListener",args:["resize","{that}.events.onSignificantDOMChange.fire"]},"onPrefsEditorMarkupReady.setPanelMaxIndex":{changePath:"panelMaxIndex",value:{expander:{funcName:"fluid.prefs.arrowScrolling.calculatePanelMaxIndex",args:["{that}.dom.panels"]}}},"beforeReset.resetPanelIndex":{listener:"{that}.applier.fireChangeRequest",args:{path:"panelIndex",value:0,type:"ADD",source:"reset"}},"onScroll.setPanelIndex":{changePath:"panelIndex",value:{expander:{funcName:"fluid.prefs.arrowScrolling.getClosestPanelIndex",args:"{that}.dom.panels"}},source:"scrollEvent"}},invokers:{eventToScrollIndex:{funcName:"fluid.prefs.arrowScrolling.eventToScrollIndex",args:["{that}","{arguments}.0"]}},distributeOptions:{"arrowScrolling.panel.listeners.bindScrollArrows":{record:{"afterRender.bindScrollArrows":{this:"{that}.dom.header",method:"on",args:["click","{prefsEditor}.eventToScrollIndex"]}},target:"{that > fluid.prefs.panel}.options.listeners"}}});fluid.prefs.arrowScrolling.calculatePanelMaxIndex=function(panels){return Math.max(0,panels.length-1)};fluid.prefs.arrowScrolling.eventToScrollIndex=function(that,event){event.preventDefault();var target=$(event.target);var midPoint=target.width()/2;var currentIndex=that.model.panelIndex||0;var scrollToIndex=currentIndex+(event.offsetX<midPoint?-1:1);that.applier.change("panelIndex",scrollToIndex,"ADD","eventToScrollIndex")};fluid.prefs.arrowScrolling.scrollToPanel=function(that,panelIndex){panelIndex=panelIndex||0;var panels=that.locate("panels");var scrollContainer=that.locate("scrollContainer");var panel=panels.eq(panelIndex);if(panel.width()){scrollContainer.scrollLeft(scrollContainer.scrollLeft()+panels.eq(panelIndex).offset().left)}};fluid.prefs.arrowScrolling.getClosestPanelIndex=function(panels){var panelArray=fluid.transform(panels,(function(panel,idx){return{index:idx,offset:Math.abs($(panel).offset().left)}}));panelArray.sort((function(a,b){return a.offset-b.offset}));return fluid.get(panelArray,["0","index"])||0}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.dom");fluid.dom.getDocumentHeight=function(dokkument){var body=$("body",dokkument)[0];return body.offsetHeight};fluid.defaults("fluid.prefs.separatedPanel",{gradeNames:["fluid.prefs.prefsEditorLoader","fluid.contextAware"],events:{afterRender:null,onReady:null,onCreateSlidingPanelReady:{events:{iframeRendered:"afterRender",onPrefsEditorMessagesLoaded:"onPrefsEditorMessagesLoaded"}},templatesAndIframeReady:{events:{iframeReady:"afterRender",templatesLoaded:"onPrefsEditorTemplatesLoaded",messagesLoaded:"onPrefsEditorMessagesLoaded"}}},lazyLoad:false,contextAwareness:{lazyLoad:{checks:{lazyLoad:{contextValue:"{fluid.prefs.separatedPanel}.options.lazyLoad",gradeNames:"fluid.prefs.separatedPanel.lazyLoad"}}}},selectors:{reset:".flc-prefsEditor-reset",iframe:".flc-prefsEditor-iframe"},listeners:{"onReady.bindEvents":{listener:"fluid.prefs.separatedPanel.bindEvents",args:["{separatedPanel}.prefsEditor","{iframeRenderer}.iframeEnhancer","{separatedPanel}"]},"onCreate.hideReset":{listener:"fluid.prefs.separatedPanel.hideReset",args:["{separatedPanel}"]}},components:{slidingPanel:{type:"fluid.slidingPanel",container:"{separatedPanel}.container",createOnEvent:"onCreateSlidingPanelReady",options:{gradeNames:["fluid.prefs.msgLookup"],strings:{showText:"{that}.msgLookup.slidingPanelShowText",hideText:"{that}.msgLookup.slidingPanelHideText",showTextAriaLabel:"{that}.msgLookup.showTextAriaLabel",hideTextAriaLabel:"{that}.msgLookup.hideTextAriaLabel",panelLabel:"{that}.msgLookup.slidingPanelPanelLabel"},invokers:{operateShow:{funcName:"fluid.prefs.separatedPanel.showPanel",args:["{that}.dom.panel","{that}.events.afterPanelShow.fire"],this:null,method:null},operateHide:{funcName:"fluid.prefs.separatedPanel.hidePanel",args:["{that}.dom.panel","{iframeRenderer}.iframe","{that}.events.afterPanelHide.fire"],this:null,method:null}},components:{msgResolver:{type:"fluid.messageResolver",options:{messageBase:"{messageLoader}.resources.prefsEditor.resourceText"}}}}},iframeRenderer:{type:"fluid.prefs.separatedPanel.renderIframe",container:"{separatedPanel}.dom.iframe",options:{events:{afterRender:"{separatedPanel}.events.afterRender"},components:{iframeEnhancer:{type:"fluid.uiEnhancer",container:"{iframeRenderer}.renderPrefsEditorContainer",createOnEvent:"afterRender",options:{gradeNames:["{pageEnhancer}.uiEnhancer.options.userGrades"],jQuery:"{iframeRenderer}.jQuery",tocTemplate:"{pageEnhancer}.uiEnhancer.options.tocTemplate",inSeparatedPanel:true}}}}},prefsEditor:{createOnEvent:"templatesAndIframeReady",container:"{iframeRenderer}.renderPrefsEditorContainer",options:{gradeNames:["fluid.prefs.uiEnhancerRelay","fluid.prefs.arrowScrolling"],model:{preferences:"{separatedPanel}.model.preferences",panelIndex:"{separatedPanel}.model.panelIndex",panelMaxIndex:"{separatedPanel}.model.panelMaxIndex",local:{panelIndex:"{that}.model.panelIndex"}},autoSave:true,events:{onSignificantDOMChange:null,updateEnhancerModel:"{that}.events.modelChanged"},modelListeners:{panelIndex:[{listener:"fluid.prefs.prefsEditor.handleAutoSave",args:["{that}"],namespace:"autoSavePanelIndex"}]},listeners:{"onCreate.bindReset":{this:"{separatedPanel}.dom.reset",method:"on",args:["click","{that}.reset"]},"afterReset.applyChanges":"{that}.applyChanges","{separatedPanel}.slidingPanel.events.afterPanelShow":{listener:"fluid.prefs.arrowScrolling.scrollToPanel",args:["{that}","{that}.model.panelIndex"],priority:"after:updateView",namespace:"scrollToPanel"}}}}},outerEnhancerOptions:"{originalEnhancerOptions}.options.originalUserOptions",distributeOptions:{"separatedPanel.slidingPanel":{source:"{that}.options.slidingPanel",removeSource:true,target:"{that > slidingPanel}.options"},"separatedPanel.iframeRenderer":{source:"{that}.options.iframeRenderer",removeSource:true,target:"{that > iframeRenderer}.options"},"separatedPanel.iframeRendered.terms":{source:"{that}.options.terms",target:"{that > iframeRenderer}.options.terms"},"separatedPanel.selectors.iframe":{source:"{that}.options.iframe",removeSource:true,target:"{that}.options.selectors.iframe"},"separatedPanel.iframeEnhancer.outerEnhancerOptions":{source:"{that}.options.outerEnhancerOptions",removeSource:true,target:"{that iframeEnhancer}.options"}}});fluid.prefs.separatedPanel.hideReset=function(separatedPanel){separatedPanel.locate("reset").hide()};fluid.defaults("fluid.prefs.separatedPanel.renderIframe",{gradeNames:["fluid.viewComponent"],events:{afterRender:null},styles:{container:"fl-prefsEditor-separatedPanel-iframe"},terms:{templatePrefix:"."},markupProps:{class:"flc-iframe",src:"%templatePrefix/SeparatedPanelPrefsEditorFrame.html"},listeners:{"onCreate.startLoadingIframe":"fluid.prefs.separatedPanel.renderIframe.startLoadingIframe"}});fluid.prefs.separatedPanel.renderIframe.startLoadingIframe=function(that){var styles=that.options.styles;that.options.markupProps.src=fluid.stringTemplate(that.options.markupProps.src,that.options.terms);that.iframeSrc=that.options.markupProps.src;that.iframe=$("<iframe/>");that.iframe.on("load",(function(){var iframeWindow=that.iframe[0].contentWindow;that.iframeDocument=iframeWindow.document;that.jQuery=iframeWindow.jQuery||$;that.renderPrefsEditorContainer=that.jQuery("body",that.iframeDocument);that.jQuery(that.iframeDocument).ready(that.events.afterRender.fire)}));that.iframe.attr(that.options.markupProps);that.iframe.addClass(styles.container);that.iframe.hide();that.iframe.appendTo(that.container)};fluid.prefs.separatedPanel.updateView=function(prefsEditor){prefsEditor.events.onPrefsEditorRefresh.fire();prefsEditor.events.onSignificantDOMChange.fire()};fluid.prefs.separatedPanel.bindEvents=function(prefsEditor,iframeEnhancer,separatedPanel){var separatedPanelId=separatedPanel.slidingPanel.panelId;separatedPanel.locate("reset").attr({"aria-controls":separatedPanelId,role:"button"});separatedPanel.slidingPanel.events.afterPanelShow.addListener((function(){fluid.prefs.separatedPanel.updateView(prefsEditor)}),"updateView","after:openPanel");prefsEditor.events.onPrefsEditorRefresh.addListener((function(){iframeEnhancer.updateModel(prefsEditor.model.preferences)}),"updateModel");prefsEditor.events.afterReset.addListener((function(prefsEditor){fluid.prefs.separatedPanel.updateView(prefsEditor)}),"updateView");prefsEditor.events.onSignificantDOMChange.addListener((function(){if(fluid.get(separatedPanel,"slidingPanel.model.isShowing")){var dokkument=prefsEditor.container[0].ownerDocument;var height=fluid.dom.getDocumentHeight(dokkument);var iframe=separatedPanel.iframeRenderer.iframe;var attrs={height:height};var panel=separatedPanel.slidingPanel.locate("panel");panel.css({height:""});iframe.clearQueue();iframe.animate(attrs,400)}}),"adjustHeight");separatedPanel.slidingPanel.events.afterPanelHide.addListener((function(){separatedPanel.iframeRenderer.iframe.height(0);separatedPanel.iframeRenderer.iframe.hide()}),"collapseFrame");separatedPanel.slidingPanel.events.afterPanelShow.addListener((function(){separatedPanel.iframeRenderer.iframe.show();separatedPanel.iframeRenderer.iframe.height();separatedPanel.locate("reset").show()}),"openPanel");separatedPanel.slidingPanel.events.onPanelHide.addListener((function(){separatedPanel.locate("reset").hide()}),"hideReset")};fluid.prefs.separatedPanel.hidePanel=function(panel,iframe,callback){iframe.clearQueue();$(panel).animate({height:0},{duration:400,complete:callback})};fluid.prefs.separatedPanel.showPanel=function(panel,callback){fluid.invokeLater(callback)};fluid.defaults("fluid.prefs.separatedPanel.lazyLoad",{events:{onLazyLoad:null,onPrefsEditorMessagesPreloaded:null,onCreateSlidingPanelReady:{events:{onPrefsEditorMessagesLoaded:"onPrefsEditorMessagesPreloaded"}},templatesAndIframeReady:{events:{onLazyLoad:"onLazyLoad"}}},components:{templateLoader:{createOnEvent:"onLazyLoad"},messageLoader:{options:{events:{onResourcesPreloaded:"{separatedPanel}.events.onPrefsEditorMessagesPreloaded"},preloadResources:"prefsEditor",listeners:{"onCreate.loadResources":{listener:"fluid.prefs.separatedPanel.lazyLoad.preloadResources",args:["{that}",{expander:{func:"{that}.resolveResources"}},"{that}.options.preloadResources"]},"{separatedPanel}.events.onLazyLoad":{listener:"fluid.resourceLoader.loadResources",args:["{messageLoader}",{expander:{func:"{messageLoader}.resolveResources"}}],namespace:"loadResources"}}}},slidingPanel:{options:{invokers:{operateShow:{funcName:"fluid.prefs.separatedPanel.lazyLoad.showPanel",args:["{separatedPanel}","{that}.events.afterPanelShow.fire"]}}}}}});fluid.prefs.separatedPanel.lazyLoad.showPanel=function(separatedPanel,callback){if(separatedPanel.prefsEditor){fluid.invokeLater(callback)}else{separatedPanel.events.onReady.addListener((function(that){that.events.onReady.removeListener("showPanelCallBack");fluid.invokeLater(callback)}),"showPanelCallBack");separatedPanel.events.onLazyLoad.fire()}};fluid.prefs.separatedPanel.lazyLoad.preloadResources=function(that,resources,toPreload){toPreload=fluid.makeArray(toPreload);var preloadResources={};fluid.each(toPreload,(function(resourceName){preloadResources[resourceName]=resources[resourceName]}));fluid.fetchResources(preloadResources,(function(){that.resources=preloadResources;that.events.onResourcesPreloaded.fire(preloadResources)}))}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.fullNoPreview",{gradeNames:["fluid.prefs.prefsEditorLoader"],components:{prefsEditor:{container:"{that}.container",options:{listeners:{"afterReset.applyChanges":{listener:"{that}.applyChanges"},"afterReset.save":{listener:"{that}.save",priority:"after:applyChanges"}}}}},events:{onReady:null}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.defaults("fluid.prefs.fullPreview",{gradeNames:["fluid.prefs.prefsEditorLoader"],outerUiEnhancerOptions:"{originalEnhancerOptions}.options.originalUserOptions",outerUiEnhancerGrades:"{originalEnhancerOptions}.uiEnhancer.options.userGrades",components:{prefsEditor:{container:"{that}.container",options:{components:{preview:{type:"fluid.prefs.preview",createOnEvent:"onReady",container:"{prefsEditor}.dom.previewFrame",options:{listeners:{"onReady.boilOnPreviewReady":"{fullPreview}.events.onPreviewReady"}}}},listeners:{"onReady.boil":{listener:"{prefsEditorLoader}.events.onPrefsEditorReady"}},distributeOptions:{"fullPreview.prefsEditor.preview":{source:"{that}.options.preview",removeSource:true,target:"{that > preview}.options"}}}}},events:{onPrefsEditorReady:null,onPreviewReady:null,onReady:{events:{onPrefsEditorReady:"onPrefsEditorReady",onPreviewReady:"onPreviewReady"},args:"{that}"}},distributeOptions:{"fullPreview.enhancer.outerUiEnhancerOptions":{source:"{that}.options.outerUiEnhancerOptions",target:"{that enhancer}.options"},"fullPreview.enhancer.previewEnhancer":{source:"{that}.options.previewEnhancer",target:"{that enhancer}.options"},"fullPreviw.preview":{source:"{that}.options.preview",target:"{that preview}.options"},"fullPreview.enhancer.outerUiEnhancerGrades":{source:"{that}.options.outerUiEnhancerGrades",target:"{that enhancer}.options.gradeNames"}}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs.schemas");fluid.prefs.schemas.merge=function(target,source){if(!target){target={type:"object",properties:{}}}source=source.properties||source;$.extend(true,target.properties,source);return target};fluid.defaults("fluid.prefs.primaryBuilder",{gradeNames:["fluid.component","{that}.buildPrimary"],schemaIndex:{expander:{func:"fluid.indexDefaults",args:["schemaIndex",{gradeNames:"fluid.prefs.schemas",indexFunc:"fluid.prefs.primaryBuilder.defaultSchemaIndexer"}]}},primarySchema:{},typeFilter:[],invokers:{buildPrimary:{funcName:"fluid.prefs.primaryBuilder.buildPrimary",args:["{that}.options.schemaIndex","{that}.options.typeFilter","{that}.options.primarySchema"]}}});fluid.prefs.primaryBuilder.buildPrimary=function(schemaIndex,typeFilter,primarySchema){var suppliedPrimaryGradeName="fluid.prefs.schemas.suppliedPrimary"+fluid.allocateGuid();fluid.defaults(suppliedPrimaryGradeName,{gradeNames:["fluid.prefs.schemas"],schema:fluid.filterKeys(primarySchema.properties||primarySchema,typeFilter,false)});var primary=[];fluid.each(typeFilter,(function merge(type){var schemaGrades=schemaIndex[type];if(schemaGrades){primary.push.apply(primary,schemaGrades)}}));primary.push(suppliedPrimaryGradeName);return primary};fluid.prefs.primaryBuilder.defaultSchemaIndexer=function(defaults){if(defaults.schema){return fluid.keys(defaults.schema.properties)}};fluid.defaults("fluid.prefs.schemas",{gradeNames:["fluid.component"],mergePolicy:{schema:fluid.prefs.schemas.merge}})})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs");fluid.defaults("fluid.prefs.auxSchema",{gradeNames:["fluid.component"]});fluid.prefs.expandSchemaValue=function(root,pathRef){if(pathRef.charAt(0)!=="@"){return pathRef}return fluid.get(root,pathRef.substring(1))};fluid.prefs.addAtPath=function(root,path,object){var existingObject=fluid.get(root,path);fluid.set(root,path,$.extend(true,{},existingObject,object));return root};fluid.prefs.removeKey=function(root,key){var value=root[key];delete root[key];return value};fluid.prefs.rearrangeDirect=function(root,toPath,sourcePath){var result={};var sourceValue=fluid.prefs.removeKey(root,sourcePath);if(sourceValue){fluid.set(result,toPath,sourceValue)}return result};fluid.prefs.addCommonOptions=function(root,path,commonOptions,templateValues){templateValues=templateValues||{};var existingValue=fluid.get(root,path);if(!existingValue){return root}var opts={},mergePolicy={};fluid.each(commonOptions,(function(value,key){if(key==="container"){var componentType=fluid.get(root,[path,"type"]);var componentOptions=fluid.defaults(componentType);if(fluid.get(componentOptions,["argumentMap","container"])===undefined){return false}}if(key.indexOf("gradeNames")!==-1){mergePolicy[key]=fluid.arrayConcatPolicy}key=fluid.stringTemplate(key,templateValues);value=typeof value==="string"?fluid.stringTemplate(value,templateValues):value;fluid.set(opts,key,value)}));fluid.set(root,path,fluid.merge(mergePolicy,existingValue,opts));return root};fluid.prefs.containerNeeded=function(root,path){var componentType=fluid.get(root,[path,"type"]);var componentOptions=fluid.defaults(componentType);return fluid.hasGrade(componentOptions,"fluid.viewComponent")||fluid.hasGrade(componentOptions,"fluid.rendererComponent")};fluid.prefs.checkPrimarySchema=function(primarySchema,prefKey){if(!primarySchema){fluid.fail("The primary schema for "+prefKey+" is not defined.")}return!!primarySchema};fluid.prefs.flattenName=function(name){var regexp=new RegExp("\\.","g");return name.replace(regexp,"_")};fluid.prefs.constructAliases=function(auxSchema,flattenedPrefKey,aliases){aliases=fluid.makeArray(aliases);var prefsEditorModel={};var enhancerModel={};fluid.each(aliases,(function(alias){prefsEditorModel[alias]="{that}.model.preferences."+flattenedPrefKey;enhancerModel[alias]="{that}.model."+flattenedPrefKey}));fluid.prefs.addAtPath(auxSchema,["aliases_prefsEditor","model","preferences"],prefsEditorModel);fluid.prefs.addAtPath(auxSchema,["aliases_enhancer","model"],enhancerModel)};fluid.prefs.expandSchemaComponents=function(auxSchema,type,prefKey,alias,componentConfig,index,commonOptions,modelCommonOptions,mappedDefaults){var componentOptions=fluid.copy(componentConfig)||{};var components={};var initialModel={};var componentName=fluid.prefs.removeKey(componentOptions,"type");var memberName=fluid.prefs.flattenName(componentName);var flattenedPrefKey=fluid.prefs.flattenName(prefKey);if(componentName){components[memberName]={type:componentName,options:componentOptions};var selectors=fluid.prefs.rearrangeDirect(componentOptions,memberName,"container");var templates=fluid.prefs.rearrangeDirect(componentOptions,memberName,"template");var messages=fluid.prefs.rearrangeDirect(componentOptions,memberName,"message");var preferenceMap=fluid.defaults(componentName).preferenceMap;var map=preferenceMap[prefKey];var prefSchema=mappedDefaults[prefKey];fluid.each(map,(function(primaryPath,internalPath){if(fluid.prefs.checkPrimarySchema(prefSchema,prefKey)){var opts={};if(internalPath.indexOf("model.")===0&&primaryPath==="value"){var internalModelName=internalPath.slice(6);fluid.set(opts,"model",fluid.get(opts,"model")||{});fluid.prefs.addCommonOptions(opts,"model",modelCommonOptions,{internalModelName:internalModelName,externalModelName:flattenedPrefKey});fluid.set(initialModel,["members","initialModel","preferences",flattenedPrefKey],prefSchema["default"]);if(alias){fluid.set(initialModel,["members","initialModel","preferences",alias],prefSchema["default"])}}else{fluid.set(opts,internalPath,prefSchema[primaryPath])}$.extend(true,componentOptions,opts)}}));fluid.prefs.addCommonOptions(components,memberName,commonOptions,{prefKey:memberName});fluid.prefs.addAtPath(auxSchema,[type,"components"],components);fluid.prefs.addAtPath(auxSchema,[type,"selectors"],selectors);fluid.prefs.addAtPath(auxSchema,["templateLoader","resources"],templates);fluid.prefs.addAtPath(auxSchema,["messageLoader","resources"],messages);fluid.prefs.addAtPath(auxSchema,"initialModel",initialModel);fluid.prefs.constructAliases(auxSchema,flattenedPrefKey,alias)}return auxSchema};fluid.prefs.expandSchemaImpl=function(schemaToExpand,altSource){var expandedSchema=fluid.copy(schemaToExpand);altSource=altSource||expandedSchema;fluid.each(expandedSchema,(function(value,key){if(typeof value==="object"){expandedSchema[key]=fluid.prefs.expandSchemaImpl(value,altSource)}else if(typeof value==="string"){var expandedVal=fluid.prefs.expandSchemaValue(altSource,value);if(expandedVal!==undefined){expandedSchema[key]=expandedVal}else{delete expandedSchema[key]}}}));return expandedSchema};fluid.prefs.expandCompositePanels=function(auxSchema,compositePanelList,panelIndex,panelCommonOptions,subPanelCommonOptions,compositePanelBasedOnSubCommonOptions,panelModelCommonOptions,mappedDefaults){var panelsToIgnore=[];fluid.each(compositePanelList,(function(compositeDetail,compositeKey){var compositePanelOptions={};var components={};var initialModel={};var selectors={};var templates={};var messages={};var selectorsToIgnore=[];var thisCompositeOptions=fluid.copy(compositeDetail);fluid.set(compositePanelOptions,"type",thisCompositeOptions.type);delete thisCompositeOptions.type;selectors=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"container");templates=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"template");messages=fluid.prefs.rearrangeDirect(thisCompositeOptions,compositeKey,"message");var subPanelList=[];var subPanels={};var subPanelRenderOn={};if(fluid.isPlainObject(thisCompositeOptions.panels)&&!fluid.isArrayable(thisCompositeOptions.panels)){fluid.each(thisCompositeOptions.panels,(function(subpanelArray,pref){subPanelList=subPanelList.concat(subpanelArray);if(pref!=="always"){fluid.each(subpanelArray,(function(onePanel){fluid.set(subPanelRenderOn,onePanel,pref)}))}}))}else{subPanelList=thisCompositeOptions.panels}fluid.each(subPanelList,(function(subPanelID){panelsToIgnore.push(subPanelID);var subPanelPrefsKey=fluid.get(auxSchema,[subPanelID,"type"]);var safeSubPanelPrefsKey=fluid.prefs.subPanel.safePrefKey(subPanelPrefsKey);selectorsToIgnore.push(safeSubPanelPrefsKey);var subPanelOptions=fluid.copy(fluid.get(auxSchema,[subPanelID,"panel"]));var subPanelType=fluid.get(subPanelOptions,"type");fluid.set(subPanels,[safeSubPanelPrefsKey,"type"],subPanelType);var renderOn=fluid.get(subPanelRenderOn,subPanelID);if(renderOn){fluid.set(subPanels,[safeSubPanelPrefsKey,"options","renderOnPreference"],renderOn)}var map=fluid.defaults(subPanelType).preferenceMap[subPanelPrefsKey];var prefSchema=mappedDefaults[subPanelPrefsKey];fluid.each(map,(function(primaryPath,internalPath){if(fluid.prefs.checkPrimarySchema(prefSchema,subPanelPrefsKey)){var opts;if(internalPath.indexOf("model.")===0&&primaryPath==="value"){fluid.set(compositePanelOptions,["options","model"],fluid.get(compositePanelOptions,["options","model"])||{});fluid.prefs.addCommonOptions(compositePanelOptions,["options","model"],panelModelCommonOptions,{internalModelName:safeSubPanelPrefsKey,externalModelName:safeSubPanelPrefsKey});fluid.set(initialModel,["members","initialModel","preferences",safeSubPanelPrefsKey],prefSchema["default"])}else{opts=opts||{options:{}};fluid.set(opts,"options."+internalPath,prefSchema[primaryPath])}$.extend(true,subPanels[safeSubPanelPrefsKey],opts)}}));fluid.set(templates,safeSubPanelPrefsKey,fluid.get(subPanelOptions,"template"));fluid.set(messages,safeSubPanelPrefsKey,fluid.get(subPanelOptions,"message"));fluid.set(compositePanelOptions,["options","selectors",safeSubPanelPrefsKey],fluid.get(subPanelOptions,"container"));fluid.set(compositePanelOptions,["options","resources"],fluid.get(compositePanelOptions,["options","resources"])||{});fluid.prefs.addCommonOptions(compositePanelOptions.options,"resources",compositePanelBasedOnSubCommonOptions,{subPrefKey:safeSubPanelPrefsKey});delete subPanelOptions.type;delete subPanelOptions.template;delete subPanelOptions.message;delete subPanelOptions.container;fluid.set(subPanels,[safeSubPanelPrefsKey,"options"],$.extend(true,{},fluid.get(subPanels,[safeSubPanelPrefsKey,"options"]),subPanelOptions));fluid.prefs.addCommonOptions(subPanels,safeSubPanelPrefsKey,subPanelCommonOptions,{compositePanel:compositeKey,prefKey:safeSubPanelPrefsKey})}));delete thisCompositeOptions.panels;fluid.set(compositePanelOptions,["options"],$.extend(true,{},compositePanelOptions.options,thisCompositeOptions));fluid.set(compositePanelOptions,["options","selectorsToIgnore"],selectorsToIgnore);fluid.set(compositePanelOptions,["options","components"],subPanels);components[compositeKey]=compositePanelOptions;fluid.prefs.addCommonOptions(components,compositeKey,panelCommonOptions,{prefKey:compositeKey});fluid.prefs.addAtPath(auxSchema,["panels","components"],components);fluid.prefs.addAtPath(auxSchema,["panels","selectors"],selectors);fluid.prefs.addAtPath(auxSchema,["templateLoader","resources"],templates);fluid.prefs.addAtPath(auxSchema,["messageLoader","resources"],messages);fluid.prefs.addAtPath(auxSchema,"initialModel",initialModel);$.extend(true,auxSchema,{panelsToIgnore:panelsToIgnore})}));return auxSchema};fluid.prefs.expandSchema=function(schemaToExpand,indexes,topCommonOptions,elementCommonOptions,mappedDefaults){var auxSchema=fluid.prefs.expandSchemaImpl(schemaToExpand);auxSchema.namespace=auxSchema.namespace||"fluid.prefs.created_"+fluid.allocateGuid();var terms=fluid.get(auxSchema,"terms");if(terms){delete auxSchema.terms;fluid.set(auxSchema,["terms","terms"],terms)}var compositePanelList=fluid.get(auxSchema,"groups");if(compositePanelList){fluid.prefs.expandCompositePanels(auxSchema,compositePanelList,fluid.get(indexes,"panel"),fluid.get(elementCommonOptions,"panel"),fluid.get(elementCommonOptions,"subPanel"),fluid.get(elementCommonOptions,"compositePanelBasedOnSub"),fluid.get(elementCommonOptions,"panelModel"),mappedDefaults)}fluid.each(auxSchema,(function(category,prefName){var type="panel";if(category[type]&&!fluid.contains(auxSchema.panelsToIgnore,prefName)){fluid.prefs.expandSchemaComponents(auxSchema,"panels",category.type,category.alias,category[type],fluid.get(indexes,type),fluid.get(elementCommonOptions,type),fluid.get(elementCommonOptions,type+"Model"),mappedDefaults)}type="enactor";if(category[type]){fluid.prefs.expandSchemaComponents(auxSchema,"enactors",category.type,category.alias,category[type],fluid.get(indexes,type),fluid.get(elementCommonOptions,type),fluid.get(elementCommonOptions,type+"Model"),mappedDefaults)}fluid.each(["template","message"],(function(type){if(prefName===type){fluid.set(auxSchema,[type+"Loader","resources","prefsEditor"],auxSchema[type]);delete auxSchema[type]}}))}));if(auxSchema.panelsToIgnore){delete auxSchema.panelsToIgnore}fluid.each(topCommonOptions,(function(topOptions,type){fluid.prefs.addCommonOptions(auxSchema,type,topOptions)}));return auxSchema};fluid.defaults("fluid.prefs.auxBuilder",{gradeNames:["fluid.component"],mergePolicy:{elementCommonOptions:"noexpand"},auxiliarySchema:{loaderGrades:["fluid.prefs.separatedPanel"]},topCommonOptions:{panels:{gradeNames:["fluid.prefs.prefsEditor"]},enactors:{gradeNames:["fluid.uiEnhancer"]},templateLoader:{gradeNames:["fluid.resourceLoader"]},messageLoader:{gradeNames:["fluid.resourceLoader"]},initialModel:{gradeNames:["fluid.prefs.initialModel"]},terms:{gradeNames:["fluid.component"]},aliases_prefsEditor:{gradeNames:["fluid.modelComponent"]},aliases_enhancer:{gradeNames:["fluid.modelComponent"]}},elementCommonOptions:{panel:{createOnEvent:"onPrefsEditorMarkupReady",container:"{prefsEditor}.dom.%prefKey","options.gradeNames":"fluid.prefs.prefsEditorConnections","options.resources.template":"{templateLoader}.resources.%prefKey","options.messageBase":"{messageLoader}.resources.%prefKey.resourceText"},panelModel:{"%internalModelName":"{prefsEditor}.model.preferences.%externalModelName"},compositePanelBasedOnSub:{"%subPrefKey":"{templateLoader}.resources.%subPrefKey"},subPanel:{container:"{%compositePanel}.dom.%prefKey","options.messageBase":"{messageLoader}.resources.%prefKey.resourceText"},enactor:{container:"{uiEnhancer}.container"},enactorModel:{"%internalModelName":"{uiEnhancer}.model.%externalModelName"}},indexes:{panel:{expander:{func:"fluid.indexDefaults",args:["panelsIndex",{gradeNames:"fluid.prefs.panel",indexFunc:"fluid.prefs.auxBuilder.prefMapIndexer"}]}},enactor:{expander:{func:"fluid.indexDefaults",args:["enactorsIndex",{gradeNames:"fluid.prefs.enactor",indexFunc:"fluid.prefs.auxBuilder.prefMapIndexer"}]}}},mappedDefaults:{},expandedAuxSchema:{expander:{func:"fluid.prefs.expandSchema",args:["{that}.options.auxiliarySchema","{that}.options.indexes","{that}.options.topCommonOptions","{that}.options.elementCommonOptions","{that}.options.mappedDefaults"]}}});fluid.prefs.auxBuilder.prefMapIndexer=function(defaults){return fluid.keys(defaults.preferenceMap)}})(jQuery,fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.starter",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{loaderGrades:["fluid.prefs.separatedPanel"],namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",defaultLocale:"en",textSize:{type:"fluid.prefs.textSize",alias:"textSize",enactor:{type:"fluid.prefs.enactor.textSize"},panel:{type:"fluid.prefs.panel.textSize",container:".flc-prefsEditor-text-size",message:"%messagePrefix/textSize.json",template:"%templatePrefix/PrefsEditorTemplate-textSize.html"}},textFont:{type:"fluid.prefs.textFont",alias:"textFont",classes:{default:"",times:"fl-font-times",comic:"fl-font-comic-sans",arial:"fl-font-arial",verdana:"fl-font-verdana","open-dyslexic":"fl-font-open-dyslexic"},enactor:{type:"fluid.prefs.enactor.textFont",classes:"@textFont.classes"},panel:{type:"fluid.prefs.panel.textFont",container:".flc-prefsEditor-text-font",classnameMap:{textFont:"@textFont.classes"},template:"%templatePrefix/PrefsEditorTemplate-textFont.html",message:"%messagePrefix/textFont.json"}},lineSpace:{type:"fluid.prefs.lineSpace",alias:"lineSpace",enactor:{type:"fluid.prefs.enactor.lineSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.lineSpace",container:".flc-prefsEditor-line-space",message:"%messagePrefix/lineSpace.json",template:"%templatePrefix/PrefsEditorTemplate-lineSpace.html"}},contrast:{type:"fluid.prefs.contrast",alias:"theme",classes:{default:"fl-theme-prefsEditor-default",bw:"fl-theme-bw",wb:"fl-theme-wb",by:"fl-theme-by",yb:"fl-theme-yb",lgdg:"fl-theme-lgdg",gd:"fl-theme-gd",gw:"fl-theme-gw",bbr:"fl-theme-bbr"},enactor:{type:"fluid.prefs.enactor.contrast",classes:"@contrast.classes"},panel:{type:"fluid.prefs.panel.contrast",container:".flc-prefsEditor-contrast",classnameMap:{theme:"@contrast.classes"},template:"%templatePrefix/PrefsEditorTemplate-contrast.html",message:"%messagePrefix/contrast.json"}},tableOfContents:{type:"fluid.prefs.tableOfContents",alias:"toc",enactor:{type:"fluid.prefs.enactor.tableOfContents",tocTemplate:"../../components/tableOfContents/html/TableOfContents.html",tocMessage:"../../framework/preferences/messages/tableOfContents-enactor.json"},panel:{type:"fluid.prefs.panel.layoutControls",container:".flc-prefsEditor-layout-controls",template:"%templatePrefix/PrefsEditorTemplate-layout.html",message:"%messagePrefix/tableOfContents.json"}},enhanceInputs:{type:"fluid.prefs.enhanceInputs",alias:"inputs",enactor:{type:"fluid.prefs.enactor.enhanceInputs",cssClass:"fl-input-enhanced"},panel:{type:"fluid.prefs.panel.enhanceInputs",container:".flc-prefsEditor-enhanceInputs",template:"%templatePrefix/PrefsEditorTemplate-enhanceInputs.html",message:"%messagePrefix/enhanceInputs.json"}}}});fluid.defaults("fluid.prefs.schemas.textSize",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.textSize":{type:"number",default:1,minimum:.5,maximum:2,multipleOf:.1}}});fluid.defaults("fluid.prefs.schemas.lineSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.lineSpace":{type:"number",default:1,minimum:.7,maximum:2,multipleOf:.1}}});fluid.defaults("fluid.prefs.schemas.textFont",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.textFont":{type:"string",default:"default",enum:["default","times","comic","arial","verdana","open-dyslexic"],enumLabels:["textFont-default","textFont-times","textFont-comic","textFont-arial","textFont-verdana","textFont-open-dyslexic"]}}});fluid.defaults("fluid.prefs.schemas.contrast",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.contrast":{type:"string",default:"default",enum:["default","bw","wb","by","yb","lgdg","gw","gd","bbr"],enumLabels:["contrast-default","contrast-bw","contrast-wb","contrast-by","contrast-yb","contrast-lgdg","contrast-gw","contrast-gd","contrast-bbr"]}}});fluid.defaults("fluid.prefs.schemas.tableOfContents",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.tableOfContents":{type:"boolean",default:false}}});fluid.defaults("fluid.prefs.schemas.enhanceInputs",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.enhanceInputs":{type:"boolean",default:false}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.captions",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",captions:{type:"fluid.prefs.captions",enactor:{type:"fluid.prefs.enactor.captions",container:"body"},panel:{type:"fluid.prefs.panel.captions",container:".flc-prefsEditor-captions",template:"%templatePrefix/PrefsEditorTemplate-captions.html",message:"%messagePrefix/captions.json"}}}});fluid.defaults("fluid.prefs.schemas.captions",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.captions":{type:"boolean",default:false}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.letterSpace",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",letterSpace:{type:"fluid.prefs.letterSpace",enactor:{type:"fluid.prefs.enactor.letterSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.letterSpace",container:".flc-prefsEditor-letter-space",template:"%templatePrefix/PrefsEditorTemplate-letterSpace.html",message:"%messagePrefix/letterSpace.json"}}}});fluid.defaults("fluid.prefs.schemas.letterSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.letterSpace":{type:"number",default:1,minimum:.9,maximum:2,multipleOf:.1}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.speak",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",speak:{type:"fluid.prefs.speak",enactor:{type:"fluid.prefs.enactor.selfVoicing"},panel:{type:"fluid.prefs.panel.speak",container:".flc-prefsEditor-speak",template:"%templatePrefix/PrefsEditorTemplate-speak.html",message:"%messagePrefix/speak.json"}}}});fluid.defaults("fluid.prefs.schemas.speak",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.speak":{type:"boolean",default:false}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.syllabification",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html",messagePrefix:"../../framework/preferences/messages"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",syllabification:{type:"fluid.prefs.syllabification",enactor:{type:"fluid.prefs.enactor.syllabification",container:"body"},panel:{type:"fluid.prefs.panel.syllabification",container:".flc-prefsEditor-syllabification",template:"%templatePrefix/PrefsEditorTemplate-syllabification.html",message:"%messagePrefix/syllabification.json"}}}});fluid.defaults("fluid.prefs.schemas.syllabification",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.syllabification":{type:"boolean",default:false}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.localization",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",localization:{type:"fluid.prefs.localization",alias:"locale",enactor:{type:"fluid.prefs.enactor.localization"},panel:{type:"fluid.prefs.panel.localization",container:".flc-prefsEditor-localization",template:"%templatePrefix/PrefsEditorTemplate-localization.html",message:"%messagePrefix/localization.json"}}}});fluid.defaults("fluid.prefs.schemas.localization",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.localization":{type:"string",default:"",enum:["","en","en_CA","en_US","fr","es","fa","pt_BR"],enumLabels:["localization-default","localization-en","localization-fr","localization-es","localization-fa","localization-pt_BR"]}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.constructed.localizationPrefsEditorConfig",{gradeNames:["fluid.contextAware"],contextAwareness:{localeChange:{checks:{urlPath:{contextValue:"{localizationPrefsEditorConfig}.options.localizationScheme",equals:"urlPath",gradeNames:"fluid.prefs.constructed.localizationPrefsEditorConfig.urlPathLocale"}}}},distributeOptions:{"prefsEditor.localization.enactor.localizationScheme":{source:"{that}.options.localizationScheme",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.localizationScheme"},"prefsEditor.localization.panel.locales":{source:"{that}.options.locales",target:"{that prefsEditor fluid.prefs.panel.localization}.options.controlValues.localization"},"prefsEditor.localization.panel.localeNames":{source:"{that}.options.localeNames",target:"{that prefsEditor fluid.prefs.panel.localization}.options.stringArrayIndex.localization"}}});fluid.defaults("fluid.prefs.constructed.localizationPrefsEditorConfig.urlPathLocale",{distributeOptions:{"prefsEditor.localization.enactor.langMap":{source:"{that}.options.langMap",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.langMap"},"prefsEditor.localization.enactor.langSegIndex":{source:"{that}.options.langSegIndex",target:"{that uiEnhancer fluid.prefs.enactor.localization}.options.langSegIndex"}}})})(fluid_3_0_0);(function(fluid){"use strict";fluid.defaults("fluid.prefs.auxSchema.wordSpace",{gradeNames:["fluid.prefs.auxSchema"],auxiliarySchema:{namespace:"fluid.prefs.constructed",terms:{templatePrefix:"../../framework/preferences/html/",messagePrefix:"../../framework/preferences/messages/"},template:"%templatePrefix/SeparatedPanelPrefsEditor.html",message:"%messagePrefix/prefsEditor.json",wordSpace:{type:"fluid.prefs.wordSpace",enactor:{type:"fluid.prefs.enactor.wordSpace",fontSizeMap:{"xx-small":"9px","x-small":"11px",small:"13px",medium:"15px",large:"18px","x-large":"23px","xx-large":"30px"}},panel:{type:"fluid.prefs.panel.wordSpace",container:".flc-prefsEditor-word-space",template:"%templatePrefix/PrefsEditorTemplate-wordSpace.html",message:"%messagePrefix/wordSpace.json"}}}});fluid.defaults("fluid.prefs.schemas.wordSpace",{gradeNames:["fluid.prefs.schemas"],schema:{"fluid.prefs.wordSpace":{type:"number",default:1,minimum:.7,maximum:2,multipleOf:.1}}})})(fluid_3_0_0);(function($,fluid){"use strict";fluid.registerNamespace("fluid.prefs");fluid.defaults("fluid.prefs.builder",{gradeNames:["fluid.component","fluid.prefs.auxBuilder"],mergePolicy:{auxSchema:"expandedAuxSchema"},assembledPrefsEditorGrade:{expander:{func:"fluid.prefs.builder.generateGrade",args:["prefsEditor","{that}.options.auxSchema.namespace",{gradeNames:["fluid.prefs.assembler.prefsEd","fluid.viewComponent"],componentGrades:"{that}.options.constructedGrades",loaderGrades:"{that}.options.auxSchema.loaderGrades",defaultLocale:"{that}.options.auxSchema.defaultLocale",enhancer:{defaultLocale:"{that}.options.auxSchema.defaultLocale"}}]}},assembledUIEGrade:{expander:{func:"fluid.prefs.builder.generateGrade",args:["uie","{that}.options.auxSchema.namespace",{gradeNames:["fluid.viewComponent","fluid.prefs.assembler.uie"],componentGrades:"{that}.options.constructedGrades"}]}},constructedGrades:{expander:{func:"fluid.prefs.builder.constructGrades",args:["{that}.options.auxSchema",["enactors","messages","panels","initialModel","templateLoader","messageLoader","terms","aliases_prefsEditor","aliases_enhancer"]]}},mappedDefaults:"{primaryBuilder}.options.schema.properties",components:{primaryBuilder:{type:"fluid.prefs.primaryBuilder",options:{typeFilter:{expander:{func:"fluid.prefs.builder.parseAuxSchema",args:"{builder}.options.auxiliarySchema"}}}}},distributeOptions:{"builder.primaryBuilder.primarySchema":{source:"{that}.options.primarySchema",removeSource:true,target:"{that > primaryBuilder}.options.primarySchema"}}});fluid.defaults("fluid.prefs.assembler.uie",{gradeNames:["fluid.viewComponent"],components:{store:{type:"fluid.prefs.globalSettingsStore",options:{distributeOptions:{"uie.store.context.checkUser":{target:"{that fluid.prefs.store}.options.contextAwareness.strategy.checks.user",record:{contextValue:"{fluid.prefs.assembler.uie}.options.storeType",gradeNames:"{fluid.prefs.assembler.uie}.options.storeType"}}}}},enhancer:{type:"fluid.component",options:{gradeNames:"{that}.options.enhancerType",enhancerType:"fluid.pageEnhancer",components:{uiEnhancer:{options:{gradeNames:["{fluid.prefs.assembler.uie}.options.componentGrades.enactors","{fluid.prefs.assembler.prefsEd}.options.componentGrades.aliases_enhancer"]}}}}}},distributeOptions:{"uie.enhancer":{source:"{that}.options.enhancer",target:"{that uiEnhancer}.options",removeSource:true},"uie.enhancer.enhancerType":{source:"{that}.options.enhancerType",target:"{that > enhancer}.options.enhancerType"},"uie.store":{source:"{that}.options.store",target:"{that fluid.prefs.store}.options"}}});fluid.defaults("fluid.prefs.assembler.prefsEd",{gradeNames:["fluid.viewComponent","fluid.prefs.assembler.uie"],components:{prefsEditorLoader:{type:"fluid.viewComponent",container:"{fluid.prefs.assembler.prefsEd}.container",priority:"last",options:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.terms","{fluid.prefs.assembler.prefsEd}.options.componentGrades.messages","{fluid.prefs.assembler.prefsEd}.options.componentGrades.initialModel","{that}.options.loaderGrades"],templateLoader:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.templateLoader"]},messageLoader:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.messageLoader"]},prefsEditor:{gradeNames:["{fluid.prefs.assembler.prefsEd}.options.componentGrades.panels","{fluid.prefs.assembler.prefsEd}.options.componentGrades.aliases_prefsEditor","fluid.prefs.uiEnhancerRelay"]},events:{onReady:"{fluid.prefs.assembler.prefsEd}.events.onPrefsEditorReady"}}}},events:{onPrefsEditorReady:null,onReady:{events:{onPrefsEditorReady:"onPrefsEditorReady",onCreate:"onCreate"},args:["{that}"]}},distributeOptions:{"prefsEdAssembler.prefsEditorLoader.loaderGrades":{source:"{that}.options.loaderGrades",removeSource:true,target:"{that > prefsEditorLoader}.options.loaderGrades"},"prefsEdAssembler.prefsEditorLoader.terms":{source:"{that}.options.terms",removeSource:true,target:"{that prefsEditorLoader}.options.terms"},"prefsEdAssembler.prefsEditorLoader.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that prefsEditorLoader}.options.defaultLocale"},"prefsEdAssembler.uiEnhancer.defaultLocale":{source:"{that}.options.defaultLocale",target:"{that uiEnhancer}.options.defaultLocale"},"prefsEdAssembler.prefsEditor":{source:"{that}.options.prefsEditor",removeSource:true,target:"{that prefsEditor}.options"}}});fluid.prefs.builder.generateGrade=function(name,namespace,options){var gradeNameTemplate="%namespace.%name";var gradeName=fluid.stringTemplate(gradeNameTemplate,{name:name,namespace:namespace});fluid.defaults(gradeName,options);return gradeName};fluid.prefs.builder.constructGrades=function(auxSchema,gradeCategories){var constructedGrades={};fluid.each(gradeCategories,(function(category){var gradeOpts=auxSchema[category];if(fluid.get(gradeOpts,"gradeNames")){constructedGrades[category]=fluid.prefs.builder.generateGrade(category,auxSchema.namespace,gradeOpts)}}));return constructedGrades};fluid.prefs.builder.parseAuxSchema=function(auxSchema){var auxTypes=[];fluid.each(auxSchema,(function parse(field){var type=field.type;if(type){auxTypes.push(type)}}));return auxTypes};fluid.prefs.create=function(container,options){options=options||{};var builder=fluid.prefs.builder(options.build);return fluid.invokeGlobalFunction(builder.options.assembledPrefsEditorGrade,[container,options.prefsEditor])}})(jQuery,fluid_3_0_0);(function($,fluid){"use strict";fluid.prefs.builder({gradeNames:["fluid.prefs.auxSchema.starter"]});fluid.defaults("fluid.uiOptions.prefsEditor",{gradeNames:["fluid.prefs.constructed.prefsEditor"],lazyLoad:false,distributeOptions:{"uio.separatedPanel.lazyLoad":{record:"{that}.options.lazyLoad",target:"{that separatedPanel}.options.lazyLoad"},"uio.uiEnhancer.tocTemplate":{source:"{that}.options.tocTemplate",target:"{that uiEnhancer > tableOfContents}.options.tocTemplate"},"uio.uiEnhancer.tocMessage":{source:"{that}.options.tocMessage",target:"{that uiEnhancer > tableOfContents}.options.tocMessage"},"uio.uiEnhancer.ignoreForToC":{source:"{that}.options.ignoreForToC",target:"{that uiEnhancer > tableOfContents}.options.ignoreForToC"}}})})(jQuery,fluid_3_0_0);
|