{"version":3,"sources":["jsviews.js"],"names":["factory","global","$","jQuery","exports","module","define","amd","getDerivedMethod","baseMethod","method","ret","tag","this","prevBase","base","apply","arguments","getMethod","$isFunction","_d","noop","tagHandlersFromProps","tagCtx","prop","props","rHasHandlers","test","fix","constructor","prototype","retVal","val","dbgBreak","console","log","e","baseApply","JsViewsError","message","name","link","$extend","target","source","$viewsDelimiters","openChars","closeChars","$isArray","$views","linkChar","error","delimOpenChar0","delimOpenChar1","delimCloseChar0","delimCloseChar1","$subSettings","delimiters","rTag","$sub","RegExp","rTmpl","$viewsSettings","getView","inner","type","undefined","views","i","l","found","view","root","_","useKey","get","length","parent","getNestedIndex","index","getIndex","getPathObject","ob","path","ltOb","fn","prevOb","tokens","split","lt","contextParameter","key","value","wrapped","deps","res","obsCtxPrm","tagElse","callView","newRes","storeView","isUpdate","isRenderCall","store","ctx","hasOwnProperty","$helpers","linked","_cxp","scope","isTop","_ocps","_ocp","_vw","_key","ind","updateValue","observable","setProperty","_ceo","unshift","cvtArgs","data","_ucp","getTemplate","tmpl","getRsc","$templates","convertVal","converter","onError","linkCtx","argsLen","bindTo","boundTag","bnds","_lr","args","_bd","_lc","_tg","bnd","unlinked","inline","tagName","convert","onArrayChange","flow","tagCtxs","_is","extendCtx","_er","onRender","convertArgs","bound","boundArgs","bindFrom","slice","argOrProp","arg0","context","convertBoundArgs","getResource","resourceType","itemName","renderTag","parentView","bindToOrBindFrom","bindArray","m","isNaN","parseInt","topView","tagDef","template","tags","attr","parentTag","n","itemRet","tagCtxCtx","ctxPrm","initVal","content","callInit","mapDef","thisMap","bdArgs","tagDataMap","contentCtx","bindFromLength","bindToLength","linkedElement","defaultCtx","parentTmpl","lateRender","params","tmpls","render","renderContent","bndArgs","_getTmpl","init","_ctr","ths","arrVws","dataBoundOnly","dataMap","map","parents","parentTags","rendering","rndr","argDefault","linkedCtxParam","fromIndex","toIndex","_dfAt","noVws","HTML","_cp","cvt","src","unmap","tgt","rWrappedInViewMarker","links","renderWithViews","$converters","html","View","contentTmpl","parentView_","self_","self","isArray","id","viewId","cache","_ct","_cchCt","scp","indexStr","push","splice","compileChildResources","storeName","storeNames","resources","jsvStores","compileTag","Tag","baseTag","compiledDef","depends","$tags","_parentTmpl","compileTmpl","options","lookupTemplate","currentName","nodeType","elem","document","getElementById","innerHTML","getAttribute","tmplAttr","jsvTmpl","tmplName","setAttribute","compiledTmpl","tmplOrMarkup","_html","markup","tmplObject","tmplFn","replace","rEscapeQuotes","getDefaultVal","defaultVal","call","addParentRef","ref","Object","defineProperty","configurable","compileViewModel","JsvVm","vm","iterate","action","getterType","parentRef","j","getterCount","getters","getter","viewModels","JSON","parse","childOb","arr","merge","viewModel","$expando","getterNames","mod","assigned","newModArr","k","model","$observable","refresh","concat","unmapArray","modelArr","charAt","extend","proto","cnstr","privField","set","Function","htmlTag","wrapMap","$subSettingsAdvanced","_wm","rFirstElem","exec","toLowerCase","div","trim","registerStore","storeSettings","theStore","item","compile","thisStore","onStore","OBJECT","getTgt","addSetting","st","Map","baseMap","noIteration","isTopRenderCall","prevData","prevIndex","result","useViews","newView","childView","itemResult","swapContent","outerOnRender","itemVar","newCtx","noLinking","_wrp","nl","syntaxError","helpers","contentView","onRenderError","fallback","Err","isLinkExpr","convertBack","hasElse","pushprecedingContent","shift","loc","substr","rNewLine","blockTagCheck","block","parseTag","all","bind","colon","codeTag","slash","bind2","closeBlock","late","openTagName","isLateOb","pathBindings","ctxProps","paramsArgs","paramsProps","paramsCtxProps","useTrigger","allowCode","rUnescapeQuotes","rTestElseIf","current","substring","stack","pop","parseParams","rBuildHash","onerror","isCtxPrm","keyToken","keyValue","arg","param","hasHandlers","newNode","parsedParam","bindings","astTop","buildCode","setPaths","pathsArr","paths","skp","paramStructure","paramCode","paramVals","parseTokens","lftPrn0","lftPrn","operator","err","eq","path2","prn","comma","lftPrn2","apos","quot","rtPrn","rtPrnDot","prn2","space","full","parsePath","allPath","not","object","helper","viewProperty","pathTokens","leafToken","subPath","binds","named","bindto","_jsvto","bndCtx","bd","theOb","_cpfn","sb","prm","pathStart","fnDp","compiledPathStart","compiledPath","join","expr","newOb","lftPrnFCall","aposed","quoted","bndStack","_cpPthSt","_cpKey","cpFnStore","fnCall","prnDp","indexOf","prnStack","prnInd","paramIndex","boundName","rPath","prnStart","0","rBracketQuote","rPrm","ast","node","hasTag","hasEncoder","getsVal","hasCnvt","useCnvt","tmplBindings","boundOnErrStart","boundOnErrEnd","tagRender","nestedTmpls","nestedTmpl","tagAndElses","nextIsElse","oldCode","isElse","isGetVal","tagCtxFn","tagStart","trigger","retStrOpen","retStrClose","tmplBindingKey","templates","converters","code","tmplOptions","debug","debugMode","_tag","parentContext","getTargetProps","propsArr","noFunctions","isFunction","getTargetSorted","mapped","start","end","propParams","filter","sort","directSort","step","reverse","v","a","b","onFilter","sorted","paged","$fnRender","tmplElem","jquery","getCharEntity","ch","charEntities","charCodeAt","getCharFromEntity","match","token","charsFromEntities","htmlEncode","text","rIsHtml","rHtmlEncode","dataEncode","rDataEncode","dataUnencode","rDataUnencode","updateValues","sourceValues","async","bindId","ev","cvtBack","cnvtName","binding","sourceValue","origVals","sourceElem","sourceEl","tos","to","tcpTag","exprOb","contextCb","vals","_tgId","defineBindToDataTargets","bindingStore","chg","nodeName","multiple","_jsvSel","$inArray","checked","onBeforeUpdateVal","change","setValue","_jsvInd","_jsvLkEl","_jsvElse","_ctxCb","_cpCtx","onElemChange","fromAttr","defaultAttr","setter","fnSetters","_jsvTr","delegateTarget","activeBody","_jsvChg","rSplitBindings","lastIndex","_jsvBnd","onDataLinkedTagChange","eventArgs","noUpdate","forceUpdate","hasError","bindEarly","linkFn","parentElem","parentNode","oldLinkCtx","onEvent","changeHandler","onBeforeChangeStr","_toLk","VALUE","CHECKBOX","CHECKED","onUpdate","mergeCtxs","NONE","callAfterLink","observeAndBind","onAfterChangeStr","onUnbind","linkedElems","linkedElem","mainElem","displayElem","_cnvt","TRUE","addLinkMethods","updateContent","_noUpd","setDefer","_df","deferAttr","prevNode","nextNode","nodesToRemove","useProp","openIndex","closeIndex","testElem","cStyle","jsvSel","renders","targetParent","$target","targetVal","_val","_elCnt","_prv","_nxt","currentStyle","getComputedStyle","display","_jsvd","displayStyles","createElement","body","appendChild","removeChild","style","RADIO","nodes","transferViewTokens","jsvAttrStr","disposeTokens","previousSibling","lastChild","remove","empty","children","TEXTCONTENT","selected","lateLink","arrayChangeHandler","onBeforeChange","onAfterChange","items","srt","addViews","_dly","removeViews","moveViews","oldIndex","fixIndex","setArrayChangeLink","handler","arrayBinding","bndArr","off","arrayChangeStr","on","linkGetVal","_fe","contentEditable","from","renderAndLink","linkToNode","prevView","elCnt","removeViewBinding","nextSibling","addBindingMarkers","bindingKey","viewStore","exprFnDeps","propDeps","tagDepends","allowArray","cvtBk","_hdl","_dp","_depends","bdId","_apply","boundProps","_bndId","bindLinkedElChange","lnkCtx","tmplLink","$link","tmplOrLinkExpr","useInput","elementChangeStr","vwInfos","placeholderParent","targetEl","prntView","replaceMode","$view","addDataBinding","cleanData","lnk","viewInfos","rOpenViewMarkers","viewLink","outerData","validateOnly","convertMarkers","preceding","selfClose","closeTag","spaceBefore","boundId","spaceAfter","tag1","tag2","closeTag2","spaceAfterClose","selfClose2","endOpenTag","errorMsg","bndId","endOfElCnt","inTag","isVoid","tagStack","validate","voidElems","prevElCnt","elContent","defer","ids","openScript","closeScript","deferStack","badParent","processViewInfos","deferPath","deferChar","bindChar","onAftCr","deep","addedBindEls","_tkns","len","vwInfo","open","removeSubStr","onAfterCreateStr","onAfterCreate","bindEls","getViewInfos","level","tagDepth","dataLink","wrap","selector","linkViewsSel","elems","qsa","querySelectorAll","prevNodes","markerNodeInfo","contains","isLink","rViewMarkers","skip","processInfos","$viewsLinkAttr","rOpenTagMarkers","unmarkPrevOrNextNode","prevIds","linkInfo","nextView","depth","fragment","copiedNode","firstTag","wrapper","thisId","noValidate","markPrevOrNextNode","namespaceURI","rConvertMarkers","safeFragment","createDocumentFragment","firstChild","insertBefore","linkMarkup","currentView","boundTagId","tagExpr","rTagIndex","linkExpressions","bindDataLinkTarget","normalizeLinkTag","rTagDatalink","linkExprStore","linkCtxType","_gccb","$elem","str","SCRIPT","isVal","rBinding","getInfos","close","elPath","infos","rMarkerTokens","removeAttribute","marker","twoway","copyFromTagCtxToTag","linkedElements","$linkCtxElem","linkCtxElem","linkedEl","linkedTag","tagCtxElse","oldVal","indexTo","mapDeps","tagCtxslength","mainElement","displayElement","Array","contents","onBind","mapProps","mapDepends","observe","setSize","height","width","className","_jsvCl","hasClass","removeClass","addClass","onAfterLink","asyncOnElemChange","which","setTimeout","bindTriggerEvent","trig","onoff","isIE","$linkedElem","newTrig","oldTrig","pathIndex","lastPath","bindtoOb","targetPaths","bindTos","targetPathsElses","resolveDataTargetPath","targetPath","topCp","newCtxs","newTagCtx","_thp","clean","elemArray","linkedElemTag","objId","obsId","allLinkedElems","cbId","propertyChangeStr","onDispose","cbBindingsStore","$unlink","each","innerView","getElementsByTagName","inputAttrib","viewOrTagChar","viewOrTag","precedingLength","emptyView","vwItem","rOpenMarkers","values","setValues","tagOrView","theTag","theView","select","filtered","add","find","withMarkers","prevIsFirstNode","lastSibling","childTags","_gm","indexFrom","linkedCtxPrmKey","newVal","_bdArgs","_bdVals","inArray","extra","domChange","hasListener","_data","events","domChangeNotification","triggerHandler","dataItems","delayed","viewsCount","itemsCount","keepNodes","removeView","viewToRemove","parts","itemView","setPrv","prv","rTagMarkers","selfNxt","backwards","firstChange","lastChange","movedNodes","viewsToMove","appendTo","afterParts","endChange","startView","endView","afterView","startParts","endParts","observeProps","updatePropsArr","update","insert","observeMappedProps","removeProperty","oldValue","shallowArrayFilter","rShallowArrayPath","setGlobals","jsvStoreName","$observe","setting","versionNumber","rAttrEncode","&","<",">","\u0000","'","\"","`","=","amp","gt","$render","jsr","jsrender","jsrToJq","jsviews","sub","syntaxErr","settings","advSet","_err","_sq","advanced","Error","_getOb","getCache","expando","renderFile","__express","obj","_jq","jq","_clFns","_jsv","if","done","for","sortDataMap","cloned","setDataMap","range","include","*",":*","dbg","encode","unencode","url","encodeURI","$eventSpecial","event","special","PARSEINT","rNotWhite","rShallowPath","propChng","arrChng","observeStr","observeObjKey","observeCbKey","observeInnerCbKey","$data","asyncBatch","getCbKey","cb","_cId","ObjectObservable","ns","_ns","ArrayObservable","wrapArray","dependsPaths","callback","rt","nextObj","out","_ar","onDataChange","isOb","noArray","parentObs","observeAll","_arOk","array","_path","observe_apply","$observeAll","unobserve","$unobserveAll","namespace","objMap","observeArrayItems","unobs","newAllPath","filterAndObserveAll","nestedArray","newObject","newParentObs","_fltr","nextParentObs","updatedTgt","wrappedCb","isObject","obId","notRemoving","un","hasData","shallowFilter","$unobserve","batchTrigger","batch","_go","_trigger","innerObserve","unobserveBinding","observeOnOff","fullPath","pathStr","isArrayBinding","evData","dataOb","boundObOrArr","prntObs","allPth","initialNs","el","cbBindings","unbind","relPath","prevAllPath","observeObjects","observeObjectPaths","pths","getInnerCb","newObj","observePath","prts","obArrAddRemove","arrIndex","dep","obArr","prt","fnProp","isGet","_inId","pth","innerCb","p","inId","initNsArr","initNsArrLen","lastArg","wait","delay","asyncObserve","_batch","unobserveAll","nonStrict","pair","tempBatch","multi","_setProperty","leaf","removeProp","property","Date","force","previous","_insert","oldLength","numToRemove","_remove","move","newIndex","numToMove","_move","excess","newItems","insertAdded","addedItems","dataLength","newItem","num","oldItems","newLength","_srt","handleObj","oldMapOrTarget","unbound","changing","updatedMap","obsSrc","obs","srcFlt","obsTgt","obt","_updt","tgtFlt","oldMap","newMap","obmp","_def","_gck","_obs","oldAdvSet","window","navigator","userAgent","textContent","RADIOINPUT","CHECKBOXINPUT","bindElsSel","input","valueBinding","isCleanCall","oldCleanData","oldJsvDelimiters","querySelector","ol","ul","table","tbody","thead","tfoot","tr","colgroup","dl","optgroup","svg","svg_ns","br","img","hr","area","col","meta","command","embed","keygen","track","wbr","rViewPath","requiresStr","regularExpression","currentValue","toggle","_hi","activeElem","contextOb","_sel","_evs","_hlr","oldIsCleanCall","radiogroup","Math","random","domChngCntnr","useDisable","disabled","_dmChg","forOrIfTagCtx","checkboxgroup","tgCtxProps","linkExpr","arrayView","targetLength","arrayBindings","_ars","tagCt","newTagCtxs","prevArg","different","tci","getInnerView","nd","isVl","unlink","oldFn","_glt","regEx","linkCtxs","last","nextPath","addedTagCpDep","paramVal","paramExpr","tagCtxPrm","cloneExprObjects","clones","linkAttr","option","caption","th","td","legend","support","htmlSerialize","textarea"],"mappings":"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","file":"jsviews.min.js","sourcesContent":["/*! jsviews.js v1.0.8 single-file version: http://jsviews.com/ */\n/*! includes JsRender, JsObservable and JsViews - see: http://jsviews.com/#download */\n\n/* Interactive data-driven views using JsRender templates */\n\n//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< JsRender >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n/* JsRender:\n * See http://jsviews.com/#jsrender and http://github.com/BorisMoore/jsrender\n * Copyright 2020, Boris Moore\n * Released under the MIT License.\n */\n\n//jshint -W018, -W041, -W120\n\n(function(factory, global) {\n\t// global var is the this object, which is window when running in the usual browser environment\n\tvar $ = global.jQuery;\n\n\tif (typeof exports === \"object\") { // CommonJS e.g. Browserify\n\t\tmodule.exports = $\n\t\t\t? factory(global, $)\n\t\t\t: function($) { // If no global jQuery, take jQuery passed as parameter: require(\"jsviews\")(jQuery)\n\t\t\t\treturn factory(global, $);\n\t\t\t};\n\t} else if (typeof define === \"function\" && define.amd) { // AMD script loader, e.g. RequireJS\n\t\tdefine([\"jquery\"], function($) {\n\t\t\treturn factory(global, $);\n\t\t}); // Require jQuery\n\t} else { // Browser using plain ',\n\topenScript = ' - data-linked tag, close marker\n\t\t\t// We validate with inTag so no script markers are inserted in attribute context e.g. for:\n\t\t\t// \"\" or \"
...{{/if}}...\"\n\t\t\tpreceding = id\n\t\t\t\t? (preceding + endOfElCnt + spaceBefore + (inTag ? \"\" : openScript + id + closeScript)+ spaceAfter + tag)\n\t\t\t\t: endOfElCnt || all;\n\t\t}\n\n\t\tif (validate && boundId) {\n\t\t\tif (inTag) {\n\t\t\t\t// JsViews data-linking tags are not allowed within element markup.\n\t\t\t\t// See jsviews/issues/303\n\t\t\t\tsyntaxError('{^{ within elem markup (' + inTag + ' ). Use data-link=\"...\"');\n\t\t\t}\n\t\t\tif (id.charAt(0) === \"#\") {\n\t\t\t\ttagStack.unshift(id.slice(1));\n\t\t\t} else if (id.slice(1) !== (bndId = tagStack.shift())) {\n\t\t\t\t// See jsviews/issues/213\n\t\t\t\tsyntaxError('Closing tag for {^{...}} under different elem: <' + bndId + '>');\n\t\t\t}\n\t\t}\n\t\tif (tag) {\n\t\t\tinTag = tag;\n\t\t\t// If there are ids (markers since the last tag), move them to the defer string\n\t\t\ttagStack.unshift(parentTag);\n\t\t\tparentTag = tag.slice(1);\n\t\t\tif (validate && tagStack[0] && tagStack[0] === badParent[parentTag]) {\n\t\t\t\t// Missing \n\t\t\t\t// TODO: replace this by smart insertion of tags\n\t\t\t\terror('Parent of must be ');\n\t\t\t}\n\t\t\tisVoid = voidElems[parentTag];\n\t\t\tif ((elCnt = elContent[parentTag]) && !prevElCnt) {\n\t\t\t\tdeferStack.unshift(defer);\n\t\t\t\tdefer = \"\";\n\t\t\t}\n\t\t\tprevElCnt = elCnt;\n//TODO Consider providing validation which throws if you place as child of , etc. - since if not caught,\n//this can cause errors subsequently which are difficult to debug.\n//\t\t\t\tif (elContent[tagStack[0]]>2 && !elCnt) {\n//\t\t\t\t\terror(parentTag + \" in \" + tagStack[0]);\n//\t\t\t\t}\n\t\t\tif (defer && elCnt) {\n\t\t\t\tdefer += \"+\"; // Will be used for stepping back through deferred tokens\n\t\t\t}\n\t\t}\n\t\treturn preceding;\n\t}\n\n\tfunction processViewInfos(vwInfos, targetParent) {\n\t\t// If targetParent, we are processing viewInfos (which may include navigation through '+-' paths) and hooking up to the right parentElem etc.\n\t\t// (and elem may also be defined - the next node)\n\t\t// If no targetParent, then we are processing viewInfos on newly inserted content\n\t\tvar deferPath, deferChar, bindChar, parentElem, id, onAftCr, deep,\n\t\t\taddedBindEls = [];\n\n\t\t// In elCnt context (element-only content model), prevNode is the first node after the open, nextNode is the first node after the close.\n\t\t// If both are null/undefined, then open and close are at end of parent content, so the view is empty, and its placeholder is the\n\t\t// 'lastChild' of the parentNode. If there is a prevNode, then it is either the first node in the view, or the view is empty and\n\t\t// its placeholder is the 'previousSibling' of the prevNode, which is also the nextNode.\n\t\tif (vwInfos) {\n\t\t\tif (vwInfos._tkns.charAt(0) === \"@\") {\n\t\t\t\t// We are processing newly inserted content. This is a special script element that was created in convertMarkers() to process deferred bindings,\n\t\t\t\t// and inserted following the target parent element - because no element tags (outside elCnt) were encountered to carry those binding tokens.\n\t\t\t\t// We will step back from the preceding sibling of this element, looking at targetParent elements until we find the one that the current binding\n\t\t\t\t// token belongs to. Set elem to null (the special script element), and remove it from the DOM.\n\t\t\t\ttargetParent = elem.previousSibling;\n\t\t\t\telem.parentNode.removeChild(elem);\n\t\t\t\telem = undefined;\n\t\t\t}\n\t\t\tlen = vwInfos.length;\n\t\t\twhile (len--) {\n\t\t\t\tvwInfo = vwInfos[len];\n//if (prevIds.indexOf(vwInfo.token) < 0) { // This token is a newly created view or tag binding\n\t\t\t\tbindChar = vwInfo.ch;\n\t\t\t\tif (deferPath = vwInfo.path) {\n\t\t\t\t\t// We have a 'deferred path'\n\t\t\t\t\tj = deferPath.length - 1;\n\t\t\t\t\twhile (deferChar = deferPath.charAt(j--)) {\n\t\t\t\t\t\t// Use the \"+\" and\"-\" characters to navigate the path back to the original parent node where the deferred bindings ocurred\n\t\t\t\t\t\tif (deferChar === \"+\") {\n\t\t\t\t\t\t\tif (deferPath.charAt(j) === \"-\") {\n\t\t\t\t\t\t\t\tj--;\n\t\t\t\t\t\t\t\ttargetParent = targetParent.previousSibling;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttargetParent = targetParent.parentNode;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttargetParent = targetParent.lastChild;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Note: Can use previousSibling and lastChild, not previousElementSibling and lastElementChild,\n\t\t\t\t\t\t// since we have removed white space within elCnt. Hence support IE < 9\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (bindChar === \"^\") {\n\t\t\t\t\tif (tag = bindingStore[id = vwInfo.id]) {\n\t\t\t\t\t\t// The binding may have been deleted, for example in a different handler to an array collectionChange event\n\t\t\t\t\t\t// This is a tag binding\n\t\t\t\t\t\tdeep = targetParent && (!elem || elem.parentNode !== targetParent); // We are stepping back looking for the right targetParent,\n\t\t\t\t\t\t// or we are linking existing content and this element is in elCnt, not an immediate child of the targetParent.\n\t\t\t\t\t\tif (!elem || deep) {\n\t\t\t\t\t\t\ttag.parentElem = targetParent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (vwInfo.elCnt && deep) {\n\t\t\t\t\t\t\t// With element only content, if there is no following element, or if the binding is deeper than the following element\n\t\t\t\t\t\t\t// then we need to set the open or close token as a deferred binding annotation on the parent\n\t\t\t\t\t\t\tsetDefer(targetParent, (vwInfo.open ? \"#\" : \"/\") + id + bindChar + (targetParent._df || \"\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// This is an open or close marker for a data-linked tag {^{...}}. Add it to bindEls.\n\t\t\t\t\t\taddedBindEls.push([deep ? null : elem, vwInfo]);\n\t\t\t\t\t}\n\t\t\t\t} else if (view = viewStore[id = vwInfo.id]) {\n\t\t\t\t\t// The view may have been deleted, for example in a different handler to an array collectionChange event\n\t\t\t\t\tif (!view.parentElem) {\n\t\t\t\t\t\t// If view is not already extended for JsViews, extend and initialize the view object created in JsRender, as a JsViews view\n\t\t\t\t\t\tview.parentElem = targetParent || elem && elem.parentNode || parentNode;\n\t\t\t\t\t\tview._.onRender = addBindingMarkers;\n\t\t\t\t\t\tview._.onArrayChange = arrayChangeHandler;\n\t\t\t\t\t\tsetArrayChangeLink(view);\n\t\t\t\t\t}\n\t\t\t\t\tparentElem = view.parentElem;\n\t\t\t\t\tif (vwInfo.open) {\n\t\t\t\t\t\t// This is an 'open view' node (preceding script marker node,\n\t\t\t\t\t\t// or if elCnt, the first element in the view, with a data-jsv annotation) for binding\n\t\t\t\t\t\tview._elCnt = vwInfo.elCnt;\n\t\t\t\t\t\tif (targetParent && !elem) {\n\t\t\t\t\t\t\tsetDefer(targetParent, \"#\" + id + bindChar + (targetParent._df || \"\"));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// No targetParent, so there is a ._nxt elem (and this is processing tokens on the elem)\n\t\t\t\t\t\t\tif (!view._prv) {\n\t\t\t\t\t\t\t\tsetDefer(parentElem, removeSubStr(parentElem._df, \"#\" + id + bindChar));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tview._prv = elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// This is a 'close view' marker node for binding\n\t\t\t\t\t\tif (targetParent && (!elem || elem.parentNode !== targetParent)) {\n\t\t\t\t\t\t\t// There is no ._nxt so add token to _df. It is deferred.\n\t\t\t\t\t\t\tsetDefer(targetParent, \"/\" + id + bindChar + (targetParent._df || \"\"));\n\t\t\t\t\t\t\tview._nxt = undefined;\n\t\t\t\t\t\t} else if (elem) {\n\t\t\t\t\t\t\t// This view did not have a ._nxt, but has one now, so token may be in _df, and must be removed. (No longer deferred)\n\t\t\t\t\t\t\tif (!view._nxt) {\n\t\t\t\t\t\t\t\tsetDefer(parentElem, removeSubStr(parentElem._df, \"/\" + id + bindChar));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tview._nxt = elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (onAftCr = changeHandler(view, onAfterCreateStr) || onAfterCreate) {\n\t\t\t\t\t\t\tonAftCr.call(view.ctx.tag, view);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n//}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlen = addedBindEls.length;\n\t\t\twhile (len--) {\n\t\t\t\t// These were added in reverse order to addedBindEls. We push them in BindEls in the correct order.\n\t\t\t\tbindEls.push(addedBindEls[len]);\n\t\t\t}\n\t\t}\n\t\treturn !vwInfos || vwInfos.elCnt;\n\t}\n\n\tfunction getViewInfos(vwInfos) {\n\t\t// Used by view.childTags() and tag.childTags()\n\t\t// Similar to processViewInfos in how it steps through bindings to find tags. Only finds data-linked tags.\n\t\tvar level, parentTag, named;\n\n\t\tif (vwInfos) {\n\t\t\tlen = vwInfos.length;\n\t\t\tfor (j = 0; j < len; j++) {\n\t\t\t\tvwInfo = vwInfos[j];\n\t\t\t\t// This is an open marker for a data-linked tag {^{...}}, within the content of the tag whose id is get.id. Add it to bindEls.\n\t\t\t\t// Note - if bindingStore[vwInfo.id]._is === \"tag\" then getViewInfos is being called too soon - during first linking pass\n\t\t\t\ttag = bindingStore[vwInfo.id];\n\t\t\t\tif (!tag._is && tag.linkCtx) {\n\t\t\t\t\tparentTag = tag = tag.linkCtx.tag;\n\t\t\t\t\tnamed = tag.tagName === tagName;\n\t\t\t\t\tif (!tag.flow || named) {\n\t\t\t\t\t\tif (!deep) {\n\t\t\t\t\t\t\tlevel = 1;\n\t\t\t\t\t\t\twhile (parentTag = parentTag.parent) {\n\t\t\t\t\t\t\t\tlevel++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttagDepth = tagDepth || level; // The level of the first tag encountered.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((deep || level === tagDepth) && (!tagName || named)) {\n\t\t\t\t\t\t\t// Filter on top-level or tagName as appropriate\n\t\t\t\t\t\t\ttags.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction dataLink() {\n\t\t//================ Data-link and fixup of data-jsv annotations ================\n\t\tvar j, index,\n\t\t\ttokens = \"\",\n\t\t\twrap = {},\n\t\t\tselector = linkViewsSel + (get ? \",[\" + deferAttr + \"]\" : \"\");\n\t\t\t// If a childTags() call, get = \",[\" + deferAttr + \"]\" - since we need to include elements that have a ._df expando for deferred tokens\n\n\t\telems = qsa ? parentNode.querySelectorAll(selector) : $(selector, parentNode).get();\n\t\tl = elems.length;\n\n\t\t// The prevNode will be in the returned query, since we called markPrevOrNextNode() on it.\n\t\t// But it may have contained nodes that satisfy the selector also.\n\t\tif (prevNode && prevNode.innerHTML) {\n\t\t\t// Find the last contained node of prevNode, to use as the prevNode - so we only link subsequent elems in the query\n\t\t\tprevNodes = qsa ? prevNode.querySelectorAll(selector) : $(selector, prevNode).get();\n\t\t\tprevNode = prevNodes.length ? prevNodes[prevNodes.length - 1] : prevNode;\n\t\t}\n\n\t\ttagDepth = 0;\n\t\tfor (i = 0; i < l; i++) {\n\t\t\telem = elems[i];\n\t\t\tif (prevNode && !found) {\n\t\t\t\t// If prevNode is set, not false, skip linking. If this element is the prevNode, set to false so subsequent elements will link.\n\t\t\t\tfound = (elem === prevNode);\n\t\t\t} else if (nextNode && elem === nextNode) {\n\t\t\t\t// If nextNode is set then break when we get to nextNode\n\t\t\t\tif (get) {\n\t\t\t\t\ttokens += markerNodeInfo(elem);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t} else if (elem.parentNode) {\n\t\t\t\t// elem has not been removed from DOM\n\t\t\t\tif (get) {\n\t\t\t\t\ttokens += markerNodeInfo(elem);\n\t\t\t\t\tif (elem._df) {\n\t\t\t\t\t\tj = i + 1;\n\t\t\t\t\t\twhile (j < l && elem.contains(elems[j])) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add deferred tokens after any tokens on descendant elements of this one\n\t\t\t\t\t\twrap[j-1] = elem._df;\n\t\t\t\t\t}\n\t\t\t\t\tif (wrap[i]) {\n\t\t\t\t\t\ttokens += wrap[i] || \"\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (isLink && (vwInfo = viewInfos(elem, undefined, rViewMarkers)) && (vwInfo = vwInfo[0])) {\n\t\t\t\t\t\t// If this is a link(trueOrString ...) call we will avoid re-binding to elems that are within template-rendered views\n\t\t\t\t\t\tskip = skip ? (vwInfo.id !== skip && skip) : vwInfo.open && vwInfo.id;\n\t\t\t\t\t}\n\t\t\t\t\tif (!skip && processInfos(viewInfos(elem))\n\t\t\t\t\t\t// If a link() call, processViewInfos() adds bindings to bindEls, and returns true for non-script nodes, for adding data-link bindings\n\t\t\t\t\t\t// If a childTags() call, getViewInfos returns array of tag bindings.\n\t\t\t\t\t\t\t&& elem.getAttribute($viewsLinkAttr)) {\n\t\t\t\t\t\tbindEls.push([elem]); // A data-linked element so add to bindEls too\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (get) {\n\t\t\ttokens += parentNode._df || \"\";\n\t\t\tif (index = tokens.indexOf(\"#\" + get.id) + 1) {\n\t\t\t\t// We are looking for view.childTags() or tag.childTags() - so start after the open token of the parent view or tag.\n\t\t\t\ttokens = tokens.slice(index + get.id.length);\n\t\t\t}\n\t\t\tindex = tokens.indexOf(\"/\" + get.id);\n\t\t\tif (index + 1) {\n\t\t\t\t// We are looking for view.childTags() or tag.childTags() - so don't look beyond the close token of the parent view or tag.\n\t\t\t\ttokens = tokens.slice(0, index);\n\t\t\t}\n\t\t\t// Call getViewInfos to add the found childTags to the tags array\n\t\t\tgetViewInfos(viewInfos(tokens, undefined, rOpenTagMarkers));\n\t\t}\n\n\t\tif (html === undefined && parentNode.getAttribute($viewsLinkAttr)) {\n\t\t\tbindEls.push([parentNode]); // Support data-linking top-level element directly (not within a data-linked container)\n\t\t}\n\n\t\t// Remove temporary marker script nodes they were added by markPrevOrNextNode\n\t\tunmarkPrevOrNextNode(prevNode, elCnt);\n\t\tunmarkPrevOrNextNode(nextNode, elCnt);\n\n\t\tif (get) {\n\t\t\treturn; // We have added childTags to the tags array, so we are done\n\t\t}\n\n\t\tif (elCnt && defer + ids) {\n\t\t\t// There are some views with elCnt, for which the open or close did not precede any HTML tag - so they have not been processed yet\n\t\t\telem = nextNode;\n\t\t\tif (defer) {\n\t\t\t\tif (nextNode) {\n\t\t\t\t\tprocessViewInfos(viewInfos(defer + \"+\", true), nextNode);\n\t\t\t\t} else {\n\t\t\t\t\tprocessViewInfos(viewInfos(defer, true), parentNode);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocessViewInfos(viewInfos(ids, true), parentNode);\n\t\t\t// If there were any tokens on nextNode which have now been associated with inserted HTML tags, remove them from nextNode\n\t\t\tif (nextNode) {\n\t\t\t\ttokens = nextNode.getAttribute(jsvAttrStr);\n\t\t\t\tif (l = tokens.indexOf(prevIds) + 1) {\n\t\t\t\t\ttokens = tokens.slice(l + prevIds.length - 1);\n\t\t\t\t}\n\t\t\t\tnextNode.setAttribute(jsvAttrStr, ids + tokens);\n\t\t\t}\n\t\t}\n\n// if (context.lazyLink) {\n// setTimeout(doLinking) (doLinking is function wrapper of following lines)\n// See Future tasks, and https://github.com/BorisMoore/jsviews/issues/368.\n// Could call context.lazyLink as callback, on async completion - or return promise.\n\t\t//================ Bind the data-linked elements and tags ================\n\t\tl = bindEls.length;\n\t\tfor (i = 0; i < l; i++) {\n\t\t\telem = bindEls[i];\n\t\t\tlinkInfo = elem[1];\n\t\t\telem = elem[0];\n\t\t\tif (linkInfo) {\n\t\t\t\tif (tag = bindingStore[linkInfo.id]) {\n\t\t\t\t\tif (linkCtx = tag.linkCtx) {\n\t\t\t\t\t\t// The tag may have been stored temporarily on the bindingStore - or may have already been replaced by the actual binding\n\t\t\t\t\t\ttag = linkCtx.tag;\n\t\t\t\t\t\ttag.linkCtx = linkCtx;\n\t\t\t\t\t}\n\t\t\t\t\tif (linkInfo.open) {\n\t\t\t\t\t\t// This is an 'open linked tag' binding annotation for a data-linked tag {^{...}}\n\t\t\t\t\t\tif (elem) {\n\t\t\t\t\t\t\ttag.parentElem = elem.parentNode;\n\t\t\t\t\t\t\ttag._prv = elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttag._elCnt = linkInfo.elCnt;\n\t\t\t\t\t\t// We data-link depth-first (\"on the way in\"), which is better for perf - and allows setting parent tags etc.\n\t\t\t\t\t\tview = tag.tagCtx.view;\n\n\t\t\t\t\t\t// Add data binding (unless skipped due to lateRender)\n\t\t\t\t\t\taddDataBinding(late, undefined, tag._prv, view, linkInfo.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttag._nxt = elem;\n\t\t\t\t\t\tif (tag._.unlinked && !tag._toLk) {\n\t\t\t\t\t\t\t// This is a 'close linked tag' binding annotation (and data-binding was not skipped due to lateRender)\n\t\t\t\t\t\t\ttagCtx = tag.tagCtx;\n\t\t\t\t\t\t\tview = tagCtx.view;\n\t\t\t\t\t\t\tcallAfterLink(tag);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Add data binding for a data-linked element (with data-link attribute)\n\t\t\t\taddDataBinding(late, elem.getAttribute($viewsLinkAttr), elem, $view(elem), undefined, isLink, outerData, context);\n\t\t\t}\n\t\t}\n//});\n\t}\n\t//==== /end of nested functions ====\n\n\tvar inTag, linkCtx, tag, i, l, j, len, elems, elem, view, vwInfo, linkInfo, prevNodes, token, prevView, nextView,\n\t\tnode, tags, deep, tagName, tagCtx, validate, tagDepth, depth, fragment, copiedNode, firstTag, parentTag,\n\t\tisVoid, wrapper, div, tokens, elCnt, prevElCnt, htmlTag, ids, prevIds, found, skip, isLink, get,\n\t\tself = this,\n\t\tthisId = self._.id + \"_\",\n\t\tdefer = \"\",\n\t\t// The marker ids for which no tag was encountered (empty views or final closing markers) which we carry over to container tag\n\t\tbindEls = [],\n\t\ttagStack = [],\n\t\tdeferStack = [],\n\t\tlate = [],\n\t\tonAfterCreate = changeHandler(self, onAfterCreateStr),\n\t\tprocessInfos = processViewInfos;\n\n\tif (refresh) {\n\t\tif (refresh.tmpl) {\n\t\t\t// refresh is the prevView, passed in from addViews()\n\t\t\tprevView = \"/\" + refresh._.id + \"_\";\n\t\t} else {\n\t\t\tisLink = refresh.lnk; // Top-level linking\n\t\t\tif (refresh.tag) {\n\t\t\t\tthisId = refresh.tag + \"^\";\n\t\t\t\trefresh = true;\n\t\t\t}\n\t\t\tif (get = refresh.get) {\n\t\t\t\tprocessInfos = getViewInfos;\n\t\t\t\ttags = get.tags;\n\t\t\t\tdeep = get.deep;\n\t\t\t\ttagName = get.name;\n\t\t\t}\n\t\t}\n\t\trefresh = refresh === true;\n\t}\n\n\tparentNode = parentNode\n\t\t? (\"\" + parentNode === parentNode\n\t\t\t? $(parentNode)[0] // It is a string, so treat as selector\n\t\t\t: parentNode.jquery\n\t\t\t\t? parentNode[0] // A jQuery object - take first element.\n\t\t\t\t: parentNode)\n\t\t: (self.parentElem // view.link()\n\t\t\t|| document.body); // link(null, data) to link the whole document\n\n\tvalidate = !$subSettingsAdvanced.noValidate && parentNode.contentEditable !== TRUE;\n\tparentTag = parentNode.tagName.toLowerCase();\n\telCnt = !!elContent[parentTag];\n\n\tprevNode = prevNode && markPrevOrNextNode(prevNode, elCnt);\n\tnextNode = nextNode && markPrevOrNextNode(nextNode, elCnt) || null;\n\n\tif (html != undefined) {\n\t\t//================ Insert html into DOM using documentFragments (and wrapping HTML appropriately). ================\n\t\t// Also convert markers to DOM annotations, based on content model.\n\t\t// Corresponds to nextNode ? $(nextNode).before(html) : $(parentNode).html(html);\n\t\t// but allows insertion to wrap correctly even with inserted script nodes. jQuery version will fail e.g. under tbody or select.\n\t\t// This version should also be slightly faster\n\t\tdiv = document.createElement(\"div\");\n\t\twrapper = div;\n\t\tprevIds = ids = \"\";\n\t\thtmlTag = parentNode.namespaceURI === \"http://www.w3.org/2000/svg\" ? \"svg_ns\" : (firstTag = rFirstElem.exec(html)) && firstTag[1] || \"\";\n\t\tif (elCnt) {\n\t\t\t// Now look for following view, and find its tokens, or if not found, get the parentNode._df tokens\n\t\t\tnode = nextNode;\n\t\t\twhile (node && !(nextView = viewInfos(node))) {\n\t\t\t\tnode = node.nextSibling;\n\t\t\t}\n\t\t\tif (tokens = nextView ? nextView._tkns : parentNode._df) {\n\t\t\t\ttoken = prevView || \"\";\n\t\t\t\tif (refresh || !prevView) {\n\t\t\t\t\ttoken += \"#\" + thisId;\n\t\t\t\t}\n\t\t\t\tj = tokens.indexOf(token);\n\t\t\t\tif (j + 1) {\n\t\t\t\t\tj += token.length;\n\t\t\t\t\t// Transfer the initial tokens to inserted nodes, by setting them as the ids variable, picked up in convertMarkers\n\t\t\t\t\tprevIds = ids = tokens.slice(0, j);\n\t\t\t\t\ttokens = tokens.slice(j);\n\t\t\t\t\tif (nextView) {\n\t\t\t\t\t\tnode.setAttribute(jsvAttrStr, tokens);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetDefer(parentNode, tokens);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//================ Convert the markers to DOM annotations, based on content model. ================\n//\t\t\toldElCnt = elCnt;\n\t\tisVoid = undefined;\n\t\thtml = (\"\" + html).replace(rConvertMarkers, convertMarkers);\n//\t\t\tif (!!oldElCnt !== !!elCnt) {\n//\t\t\t\terror(\"Parse: \" + html); // Parse error. Content not well-formed?\n//\t\t\t}\n\t\tif (validate && tagStack.length) {\n\t\t\tsyntaxError(\"Mismatched '<\" + parentTag + \"...>' in:\\n\" + html); // Unmatched tag\n\t\t}\n\t\tif (validateOnly) {\n\t\t\treturn;\n\t\t}\n\t\t// Append wrapper element to doc fragment\n\t\tsafeFragment.appendChild(div);\n\n\t\t// Go to html and back, then peel off extra wrappers\n\t\t// Corresponds to jQuery $(nextNode).before(html) or $(parentNode).html(html);\n\t\t// but supports svg elements, and other features missing from jQuery version (and this version should also be slightly faster)\n\t\thtmlTag = wrapMap[htmlTag] || wrapMap.div;\n\t\tdepth = htmlTag[0];\n\t\twrapper.innerHTML = htmlTag[1] + html + htmlTag[2];\n\t\twhile (depth--) {\n\t\t\twrapper = wrapper.lastChild;\n\t\t}\n\t\tsafeFragment.removeChild(div);\n\t\tfragment = document.createDocumentFragment();\n\t\twhile (copiedNode = wrapper.firstChild) {\n\t\t\tfragment.appendChild(copiedNode);\n\t\t}\n\t\t// Insert into the DOM\n\t\tparentNode.insertBefore(fragment, nextNode);\n\t}\n\tdataLink();\n\n\treturn late;\n}\n\nfunction addDataBinding(late, linkMarkup, node, currentView, boundTagId, isLink, data, context) {\n\t// Add data binding for data-linked elements or {^{...}} data-linked tags\n\tvar tmpl, tokens, attr, convertBack, tagExpr, linkFn, linkCtx, tag, rTagIndex, hasElse, lastIndex,\n\t\tlinkExpressions = [];\n\n\tif (boundTagId) {\n\t\t// boundTagId is a string for {^{...}} data-linked tag. So only one linkTag in linkMarkup\n\t\t// data and context arguments are undefined\n\t\ttag = bindingStore[boundTagId];\n\t\ttag = tag.linkCtx ? tag.linkCtx.tag : tag;\n\n\t\tlinkCtx = tag.linkCtx || {\n\t\t\ttype: \"inline\",\n\t\t\tdata: currentView.data, // source\n\t\t\telem: tag._elCnt ? tag.parentElem : node, // target\n\t\t\tview: currentView,\n\t\t\tctx: currentView.ctx,\n\t\t\tattr: HTML, // Script marker nodes are associated with {^{ and always target HTML.\n\t\t\tfn: tag._.bnd,\n\t\t\ttag: tag,\n\t\t\t// Pass the boundTagId in the linkCtx, so that it can be picked up in observeAndBind\n\t\t\t_bndId: boundTagId\n\t\t};\n\t\ttag.linkCtx = linkCtx;\n\t\tbindDataLinkTarget(linkCtx, late);\n\t\ttag._toLk = linkCtx._bndId; // If data binding happened, remove _toLk flag from tag\n\t} else if (linkMarkup && node) {\n\t\t// Data-linked element\n\n\t\t// If isLink then this is a top-level linking: .link(expression, target, data, ....) or\n\t\t// .link(true, target, data, ....) scenario - and data and context are passed in separately from the view\n\t\tdata = isLink ? data : currentView.data;\n\t\ttmpl = currentView.tmpl;\n\t\tlinkMarkup = normalizeLinkTag(linkMarkup, defaultAttr(node));\n\t\tlastIndex = rTagDatalink.lastIndex = 0;\n\t\twhile (tokens = rTagDatalink.exec(linkMarkup)) { // TODO require } to be followed by whitespace or $, and remove the \\}(!\\}) option.\n\t\t\tlinkExpressions.push(tokens);\n\t\t\tlastIndex = rTagDatalink.lastIndex;\n\t\t}\n\t\tif (lastIndex < linkMarkup.length) {\n\t\t\tsyntaxError(linkMarkup);\n\t\t}\n\t\twhile (tokens = linkExpressions.shift()) {\n\t\t\t// Iterate over the data-link expressions, for different target attrs,\n\t\t\t// e.g. ~description(firstName, lastName)}\"\n\t\t\t// tokens: [all, attr, bindOnly, tagExpr, tagName, converter, colon, html, comment, code, params]\n\t\t\trTagIndex = rTagDatalink.lastIndex;\n\t\t\tattr = tokens[1];\n\t\t\ttagExpr = tokens[3];\n\t\t\twhile (linkExpressions[0] && linkExpressions[0][4] === \"else\") { // If this is {sometag...} and is followed by an {else...} add to tagExpr\n\t\t\t\ttagExpr += delimCloseChar1 + delimOpenChar0 + linkExpressions.shift()[3];\n\t\t\t\thasElse = true;\n\t\t\t}\n\t\t\tif (hasElse) { // If an {else} has been added, need also to add closing {{/sometag}}\n\t\t\t\ttagExpr += delimCloseChar1 + delimOpenChar0 + delimOpenChar1 + \"/\" + tokens[4] + delimCloseChar0;\n\t\t\t}\n\t\t\tlinkCtx = {\n\t\t\t\ttype: isLink || \"link\",\n\t\t\t\tdata: data, // source\n\t\t\t\telem: node, // target\n\t\t\t\tview: currentView,\n\t\t\t\tctx: context,\n\t\t\t\tattr: attr,\n\t\t\t\t_toLk : 1, // Flag to data-link on initial data-link call rendering call\n\t\t\t\t_noUpd : tokens[2] // Flag for data-link=\"^{...}\" so on initial data-link call will bind, but not render)\n\t\t\t};\n\n\t\t\tconvertBack = undefined;\n\t\t\tif (tokens[6]) {\n\t\t\t\tconvertBack = tokens[10] || undefined;\n\t\t\t\tlinkCtx.convert = tokens[5] || \"\";\n\t\t\t\tif (convertBack !== undefined && defaultAttr(node)) {\n\t\t\t\t\tif (attr) {\n\t\t\t\t\t\tsyntaxError(tagExpr + \"- Remove target: \" + attr);\n\t\t\t\t\t}\n\t\t\t\t\t// Default target, so allow 2 way binding\n\t\t\t\t\tlinkCtx.convertBack = convertBack = convertBack.slice(1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Compile the linkFn expression which evaluates and binds a data-link expression\n\t\t\t// TODO - optimize for the case of simple data path with no conversion, helpers, etc.:\n\t\t\t// i.e. data-link=\"a.b.c\". Avoid creating new instances of Function every time. Can use a default function for all of these...\n\n\t\t\tlinkCtx.expr = attr + tagExpr;\n\t\t\tlinkFn = linkExprStore[tagExpr];\n\t\t\tif (!linkFn) {\n\t\t\t\tlinkExprStore[tagExpr] = linkFn = $sub.tmplFn(tagExpr.replace(rEscapeQuotes, \"\\\\$&\"), tmpl, true, convertBack, hasElse);\n\t\t\t}\n\t\t\tlinkCtx.fn = linkFn;\n\t\t\tbindDataLinkTarget(linkCtx, late);\n\t\t\t// We store rTagIndex in local scope, since this addDataBinding method can sometimes be called recursively,\n\t\t\t// and each is using the same rTagDatalink instance.\n\t\t\trTagDatalink.lastIndex = rTagIndex;\n\t\t}\n//\t\t}\n\t}\n}\n\nfunction bindDataLinkTarget(linkCtx, late) {\n\t// Add data link bindings for a link expression in data-link attribute markup, or for a linkedElement\n\tfunction handler(ev, eventArgs) {\n\t\t// If the link expression uses a custom tag, the onDataLinkedTagChange call will call renderTag, which will set tagCtx on linkCtx\n\t\tif (!eventArgs || !eventArgs.refresh) {\n\t\t\tonDataLinkedTagChange.call(linkCtx, ev, eventArgs);\n\t\t}\n\t}\n\n\tvar view,\n\t\tlinkCtxType = linkCtx.type;\n\tif (linkCtxType === \"top\" || linkCtxType === \"expr\") {\n\t\t// Top-level linking: .link(expressionOrTrue, data, context) - so we need to create a view for the linking, with the data and ctx\n\t\t// which may be different than the current context of the target. Note that this view is not a standard data-linked view, so it will\n\t\t// be disposed only when its parent view is disposed.\n\t\tlinkCtx.view = new $sub.View(\n\t\t\t$sub.extendCtx(linkCtx.ctx, linkCtx.view.ctx),\n\t\t\t\"link\", linkCtx.view, linkCtx.data, linkCtx.expr, undefined, addBindingMarkers);\n\t}\n\tlinkCtx._ctxCb = $sub._gccb(view = linkCtx.view); // getContextCallback: _ctxCb, for filtering/appending to dependency paths: function(path, object) { return [(object|path)*]}\n\tlinkCtx._hdl = handler;\n\t// handler._ctx = linkCtx; Could pass linkCtx for use in a depends = function() {} call, so depends is different for different linkCtx's\n\n\tif (linkCtx.elem.nodeName === \"SELECT\"\n\t\t&& (linkCtx.elem._jsvLkEl // A SELECT which is a linkedElement\n\t\t|| (linkCtxType === \"link\" && !linkCtx.attr && linkCtx.convert !== undefined))) { // A SELECT with a data-link binding (the assign tag {:...}, not another expression such as {on ...} (See https://github.com/BorisMoore/jsviews/issues/444))\n\t\t\tvar source,\n\t\t\t\telem = linkCtx.elem,\n\t\t\t\t$elem = $(elem);\n\t\t\t$elem.on(\"jsv-domchange\", function() {\n\t\t\t\t// If the options have changed dynamically under the select, we need to refresh the data-linked selection, using the new options\n\t\t\t\tif (!arguments[3].refresh) { // eventArgs.refresh !== true - so a refresh action will only set the selection once\n\t\t\t\t\tif (elem._jsvLkEl) {\n\t\t\t\t\t\t$elem.val(elem._jsvLkEl.cvtArgs(elem._jsvElse, 1)[elem._jsvInd]); // SELECT is a linkedElement, so set to value of bndArgs(elseIndex)[bindToIndex]\n\t\t\t\t\t} else if (linkCtx.tag) {\n\t\t\t\t\t\t$elem.val(linkCtx.tag.cvtArgs(0,1)); // SELECT with data-link expression with convert=... convertBack=...\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsource = linkCtx.fn(view.data, view, $sub); // SELECT with data-link expression (either data-link='expression', or data-link='{cvt:expression:cvtBk}')\n\t\t\t\t\t\t$elem.val(linkCtx.convert || linkCtx.convertBack ? $sub._cnvt(linkCtx.convert, view, source) : source);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tif (linkCtx.fn._lr) {\n\t\tlinkCtx._toLk = 1;\n\t\tlate.push(linkCtx); // lateRender - defer rendering and linking (sync but after first linking pass)\n\t} else {\n\t\thandler(true);\n\t}\n}\n\n//=====================\n// Data-linking helpers\n//=====================\n\nfunction removeSubStr(str, substr) {\n\tvar k;\n\treturn str\n\t\t? (k = str.indexOf(substr),\n\t\t\t(k + 1\n\t\t\t\t? str.slice(0, k) + str.slice(k + substr.length)\n\t\t\t\t: str))\n\t\t: \"\";\n}\n\nfunction markerNodeInfo(node) {\n\treturn node &&\n\t\t(\"\" + node === node\n\t\t\t? node\n\t\t\t: node.tagName === SCRIPT\n\t\t\t\t? node.type.slice(3)\n\t\t\t\t: node.nodeType === 1 && node.getAttribute(jsvAttrStr) || \"\");\n}\n\nfunction viewInfos(node, isVal, rBinding) {\n\t// Test whether node is a script marker node, and if so, return metadata\n\tfunction getInfos(all, open, close, id, ch, elPath) {\n\t\tinfos.push({\n\t\t\telCnt: elCnt,\n\t\t\tid: id,\n\t\t\tch: ch,\n\t\t\topen: open,\n\t\t\tclose: close,\n\t\t\tpath: elPath,\n\t\t\ttoken: all\n\t\t});\n\t}\n\tvar elCnt, tokens,\n\t\tinfos = [];\n\tif (tokens = isVal ? node : markerNodeInfo(node)) {\n\t\telCnt = infos.elCnt = node.tagName !== SCRIPT;\n\t\telCnt = tokens.charAt(0) === \"@\" || elCnt;\n\t\tinfos._tkns = tokens;\n\t\t// rMarkerTokens = /(?:(#)|(\\/))(\\d+)([_^])([-+@\\d]+)?/g;\n\t\ttokens.replace(rBinding || rMarkerTokens, getInfos);\n\t\treturn infos;\n\t}\n}\n\nfunction unmarkPrevOrNextNode(node, elCnt) {\n\tif (node) {\n\t\tif (node.type === \"jsv\") {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t} else if (elCnt && node.getAttribute($viewsLinkAttr) === \"\") {\n\t\t\tnode.removeAttribute($viewsLinkAttr);\n\t\t}\n\t}\n}\n\nfunction markPrevOrNextNode(node, elCnt) {\n\tvar marker = node;\n\twhile (elCnt && marker && marker.nodeType !== 1) {\n\t\tmarker = marker.previousSibling;\n\t}\n\tif (marker) {\n\t\tif (marker.nodeType !== 1) {\n\t\t\t// For text nodes, we will add a script node before\n\t\t\tmarker = document.createElement(SCRIPT);\n\t\t\tmarker.type = \"jsv\";\n\t\t\tnode.parentNode.insertBefore(marker, node);\n\t\t} else if (!markerNodeInfo(marker) && !marker.getAttribute($viewsLinkAttr)) {\n\t\t\t// For element nodes, we will add a data-link attribute (unless there is already one)\n\t\t\t// so that this node gets included in the node linking process.\n\t\t\tmarker.setAttribute($viewsLinkAttr, \"\");\n\t\t}\n\t}\n\treturn marker;\n}\n\nfunction normalizeLinkTag(linkMarkup, twoway) {\n\tlinkMarkup = $.trim(linkMarkup);\n\treturn linkMarkup.slice(-1) !== delimCloseChar0\n\t// If simplified syntax is used: data-link=\"expression\", convert to data-link=\"{:expression}\",\n\t// or for inputs, data-link=\"{:expression:}\" for (default) two-way binding\n\t\t? linkMarkup = delimOpenChar1 + \":\" + linkMarkup + (twoway ? \":\" : \"\") + delimCloseChar0\n\t\t: linkMarkup;\n}\n\n//===========================\n// Methods for views and tags\n//===========================\n\nfunction callAfterLink(tag, ev, eventArgs) {\n\tfunction copyFromTagCtxToTag() {\n\t\tlinkedElems = tagCtx.linkedElems || tag.linkedElems || tag.linkedElem && [tag.linkedElem];\n\t\tif (linkedElems) {\n\t\t\ttag.linkedElems = tagCtx.linkedElems = linkedElems;\n\t\t\ttag.linkedElem = linkedElems[0] = tag.linkedElem || linkedElems[0];\n\t\t}\n\t\tif (linkedElem = tagCtx.mainElem || tag.mainElem) {\n\t\t\ttagCtx.mainElem = tag.mainElem = linkedElem;\n\t\t}\n\t\tif (linkedElem = tagCtx.displayElem || tag.displayElem) {\n\t\t\ttagCtx.displayElem = tag.displayElem = linkedElem;\n\t\t}\n\t}\n\n\tvar linkedElems, linkedElements, linkedElem, l, m, $linkCtxElem, linkCtxElem, linkedEl, linkedTag,\n\t\ttagCtxElse, props, val, oldVal, indexTo, i, mapDeps, propDeps,\n\t\ttagCtx = tag.tagCtx,\n\t\ttagCtxs = tag.tagCtxs,\n\t\ttagCtxslength = tagCtxs && tagCtxs.length,\n\t\tlinkCtx = tag.linkCtx,\n\t\tbindTo = tag.bindTo || {};\n\n\tif (tag._.unlinked) { // First call to onAfterLink, or first call after onUpdate: updateContent. Initialize and call onBind and set properties\n\t\t$linkCtxElem = $(linkCtx.elem);\n\t\tif (tag.linkedElement || tag.mainElement || tag.displayElement) {\n\t\t\tif (linkedElements = tag.linkedElement) {\n\t\t\t\t// tag.linkedElement: - selector, or array of selectors, for identifying linked elements in template/rendered content.\n\t\t\t\t// (But for tag bindings on data-linked elements, defaults to data-linked element)\n\t\t\t\ttag.linkedElem = undefined;\n\t\t\t\tl = linkedElements.length;\n\t\t\t\twhile (l--) {\n\t\t\t\t\tif (linkedElements[l]) {\n\t\t\t\t\t\tlinkCtxElem = !tag.inline && $linkCtxElem.filter(linkedElements[l]);\n\t\t\t\t\t\tm = tagCtxslength;\n\t\t\t\t\t\twhile (m--) {\n\t\t\t\t\t\t\ttagCtxElse = tagCtxs[m];\n\t\t\t\t\t\t\tlinkedElems = tagCtxElse.linkedElems = tagCtxElse.linkedElems || new Array(l);\n\t\t\t\t\t\t\tlinkedElem = linkCtxElem[0] ? linkCtxElem : tagCtxElse.contents(true, linkedElements[l]);\n\t\t\t\t\t\t\tif (linkedElem[0] && linkedElem[0].type !== RADIO) {\n\t\t\t\t\t\t\t\tlinkedElems[l] = linkedElem.eq(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (linkedElements = tag.mainElement) {\n\t\t\t\t// tag.mainElement: - selector for identifying mainElem in template/rendered content\n\t\t\t\t// (But for tag bindings on data-linked elements, defaults to data-linked element)\n\t\t\t\tlinkCtxElem = !tag.inline && $linkCtxElem.filter(linkedElements);\n\t\t\t\tm = tagCtxslength;\n\t\t\t\twhile (m--) {\n\t\t\t\t\ttagCtxElse = tagCtxs[m];\n\t\t\t\t\tlinkedElem = linkCtxElem[0] ? linkCtxElem : tagCtxElse.contents(true, linkedElements).eq(0);\n\t\t\t\t\tif (linkedElem[0]) {\n\t\t\t\t\t\ttagCtxElse.mainElem = linkedElem;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (linkedElements = tag.displayElement) {\n\t\t\t\t// tag.displayElement: - selector for identifying displayElem in template/rendered content\n\t\t\t\t// (But for tag bindings on data-linked elements, defaults to data-linked element)\n\t\t\t\tlinkCtxElem = !tag.inline && $linkCtxElem.filter(linkedElements);\n\t\t\t\tm = tagCtxslength;\n\t\t\t\twhile (m--) {\n\t\t\t\t\ttagCtxElse = tagCtxs[m];\n\t\t\t\t\tlinkedElem = linkCtxElem[0] ? linkCtxElem : tagCtxElse.contents(true, linkedElements).eq(0);\n\t\t\t\t\tif (linkedElem[0]) {\n\t\t\t\t\t\ttagCtxElse.displayElem = linkedElem;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcopyFromTagCtxToTag();\n\t\t}\n\t\tif (tag.onBind) {\n\t\t\ttag.onBind(tagCtx, linkCtx, tag.ctx, ev, eventArgs);\n\t\t\tcopyFromTagCtxToTag();\n\t\t}\n\t}\n\n\tm = tagCtxslength;\n\twhile (m--) {\n\t\ttagCtxElse = tagCtxs[m];\n\t\tprops = tagCtxElse.props;\n\n\t\tif (tag._.unlinked && tagCtxElse.map && tag.mapProps) {\n\t\t\t// Compile the dependency paths for observable changes in mapProps (e.g. start, end, filter)\n\t\t\ti = tag.mapProps.length;\n\t\t\tmapDeps = props.mapDepends || tag.mapDepends || []; // dependency paths\n\t\t\tmapDeps = $isArray(mapDeps) ? mapDeps : [mapDeps];\n\t\t\twhile (i--) { // Iterate through mapProps\n\t\t\t\tvar prop = tag.mapProps[i];\n\t\t\t\tpropDeps = tag._.bnd.paths[m][\"_\" + prop]; // paths for mapProps on this tagCtx\n\t\t\t\tif (propDeps && propDeps.length && propDeps.skp) { // Not already a bound prop ^prop=expression;\n\t\t\t\t\tmapDeps = mapDeps.concat(propDeps); // Add dependencies for this prop expression\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (mapDeps.length) {\n\t\t\t\ttagCtxElse.map.observe(mapDeps, linkCtx); // Listen to observable changes of mapProps, and call map.update when change happens\n\t\t\t}\n\t\t}\n\t\tif (linkedElem = tagCtxElse.mainElem || !tag.mainElement && tagCtxElse.linkedElems && tagCtxElse.linkedElems[0]) {\n\t\t\t// linkedElem is the mainElem (defaulting to linkedElem)\n\t\t\tif (linkedElem[0] && props.id && !linkedElem[0].id) {\n\t\t\t\tlinkedElem[0].id = props.id;\n\t\t\t}\n\t\t\tif (tag.setSize) {\n\t\t\t\tif (val = !bindTo.height && props.height || tag.height) {\n\t\t\t\t\tlinkedElem.height(val);\n\t\t\t\t}\n\t\t\t\tif (val = !bindTo.width && props.width || tag.width) {\n\t\t\t\t\tlinkedElem.width(val);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (val = (linkedElem = tagCtxElse.displayElem || linkedElem) && (!bindTo[\"class\"] && props[\"class\"] || tag.className)) {\n\t\t\t// This code supports dynamic binding to class - where it adds the class if absent, and removes/adds if a previous value is present\n\t\t\toldVal = linkedElem[0]._jsvCl;\n\t\t\tif (val !== oldVal) {\n\t\t\t\tif (linkedElem.hasClass(oldVal)) {\n\t\t\t\t\tlinkedElem.removeClass(oldVal);\n\t\t\t\t}\n\t\t\t\tlinkedElem.addClass(val);\n\t\t\t\tlinkedElem[0]._jsvCl = val;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (tag.onAfterLink) {\n\t\ttag.onAfterLink(tagCtx, linkCtx, tag.ctx, ev, eventArgs);\n\t\tcopyFromTagCtxToTag();\n\t}\n\n\tif (!tag.flow && !tag._.chg) {\n\t\tif (tag._tgId && tag._.unlinked && (tag.linkedElems || tag.bindTo)) {\n\t\t\tdefineBindToDataTargets(bindingStore[tag._tgId], tag);\n\t\t}\n\t\tm = tagCtxs.length;\n\t\twhile (m--) {\n\t\t\tprops = tag.cvtArgs(m, 1); // array of bindFrom args/props\n\t\t\tl = props.length;\n\t\t\twhile (l--) {\n\t\t\t\t// If the bound property or arg has not yet been set (e.g. during initial rendering),\n\t\t\t\t// or has been unset, because onUpdate is set to true, or if onUpdate is false,\n\t\t\t\t// but this particular bound arg/prop is being changed observably: call setValue()\n\t\t\t\ttag.setValue(props[l], l, m, ev, eventArgs);\n\t\t\t}\n\t\t\tif (tag._.unlinked) {\n\t\t\t\ttagCtx = tagCtxs[m];\n\t\t\t\tlinkedElems = tagCtx.linkedElems || !m && tag.linkedElem && [tag.linkedElem];\n\t\t\t\tindexTo = (tag.bindTo || [0]).length;\n\t\t\t\twhile (indexTo--) {\n\t\t\t\t\tif ((linkedElem = linkedElems && linkedElems[indexTo]) && (l = linkedElem.length)) {\n\t\t\t\t\t\twhile (l--) {\n\t\t\t\t\t\t\tlinkedEl = linkedElem[l];\n\t\t\t\t\t\t\tlinkedTag = linkedEl._jsvLkEl;\n\t\t\t\t\t\t\tif (!linkedTag || linkedTag !== tag) {\n\t\t\t\t\t\t\t\t// For data-linked tags, identify the linkedEl with the tag, for \"to\" binding\n\t\t\t\t\t\t\t\t// (For data-linked elements, if not yet bound, we identify later when the linkCtx.elem is bound)\n\t\t\t\t\t\t\t\tlinkedEl._jsvLkEl = tag;\n\t\t\t\t\t\t\t\tlinkedEl._jsvInd = indexTo;\n\t\t\t\t\t\t\t\tlinkedEl._jsvElse = m;\n\t\t\t\t\t\t\t\tbindLinkedElChange(tag, linkedEl);\n\t\t\t\t\t\t\t\tif (tag._tgId) {\n\t\t\t\t\t\t\t\t\tlinkedEl._jsvBnd = \"&\" + tag._tgId + \"+\"; // Add a \"+\" for cloned binding - so removing\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// elems with cloned bindings will not remove the 'parent' binding from the bindingStore.\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\ttag._.unlinked = undefined;\n\tif (tag._.lt) { // Late tag: Late path: @some.path had not returned @some object, so try again with refresh\n\t\ttag.refresh();\n\t}\n}\n\nfunction asyncOnElemChange(ev) {\n\tvar which = ev.which;\n\tif (!(which > 15 && which < 21 || which > 32 && which < 41 || which > 111 && which < 131 || which === 27 || which === 144)) {\n\t\t// Shift, Ctrl, Alt, Pause, Caplock, Page up/down End, Home, Left, Up, Right, Down, Function keys, Escape, Numlock\n\t\tsetTimeout(function() {\n\t\t\tonElemChange(ev);\n\t\t});\n\t}\n}\n\nfunction bindTriggerEvent($elem, trig, onoff) {\n\t// Bind keydown, or other trigger - (rather than use the default change event bubbled to activeBody)\n\tif (trig === true && useInput && (!isIE || $elem[0].contentEditable !== TRUE)) { // IE oninput event is not raised for contenteditable changes\n\t\t$elem[onoff](\"input.jsv\", onElemChange); // For HTML5 browser with \"oninput\" support - for mouse editing of text\n\t} else {\n\t\ttrig = \"\" + trig === trig ? trig : \"keydown.jsv\"; // Set trigger to (true || truey non-string (e.g. 1) || 'keydown')\n\t\t$elem[onoff](trig, trig.indexOf(\"keydown\") >= 0 ? asyncOnElemChange : onElemChange); // Get 'keydown' with async\n\t}\n}\n\nfunction bindLinkedElChange(tag, linkedElem) {\n\t// Two-way binding for linkedElem - in the case of input, textarea or contentEditable elements.\n\t// Trigger setting may have changed. Unbind previous trigger binding (if any) and bind new one.\n\n\tvar $linkedElem, newTrig,\n\t\toldTrig = linkedElem._jsvTr || false;\n\n\tif (tag) {\n\t\tnewTrig = tag.tagCtx.props.trigger;\n\t\tif (newTrig === undefined) {\n\t\t\tnewTrig = tag.trigger;\n\t\t}\n\t}\n\tif (newTrig === undefined) {\n\t\tnewTrig = $subSettings.trigger;\n\t}\n\t// Trigger is noop except for text box, textarea, contenteditable...\n\tnewTrig = newTrig && (linkedElem.tagName === \"INPUT\" && linkedElem.type !== CHECKBOX && linkedElem.type !== RADIO\n\t\t|| linkedElem.type === \"textarea\" || linkedElem.contentEditable === TRUE) && newTrig || false;\n\n\tif (oldTrig !== newTrig) {\n\t\t$linkedElem = $(linkedElem);\n\t\tbindTriggerEvent($linkedElem, oldTrig, \"off\");\n\t\tbindTriggerEvent($linkedElem, linkedElem._jsvTr = newTrig, \"on\");\n\t}\n}\n\nfunction defineBindToDataTargets(binding, tag, cvtBk) {\n\t// Two-way binding.\n\t// We set the binding.to[1] to be the cvtBack, and binding.to[0] to be either the path to the target, or [object, path] where the target is the\n\t// path on the provided object. So for a computed path with an object call: a.b.getObject().d.e, we set to[0] to be [exprOb, \"d.e\"], and\n\t// we bind to the path on the returned object, exprOb.ob, as target. Otherwise our target is the first path, paths[0], which we will convert\n\t// with contextCb() for paths like ~a.b.c or #x.y.z\n\n\tvar pathIndex, path, lastPath, bindtoOb, to, bindTo, paths, k, obsCtxPrm, linkedCtxParam, contextCb, targetPaths, bindTos, fromIndex,\n\t\ttagElse = 1,\n\t\ttos = [],\n\t\tlinkCtx = binding.linkCtx,\n\t\tsource = linkCtx.data,\n\t\ttargetPathsElses = linkCtx.fn.paths;\n\n\tif (binding && !binding.to) {\n\t\tif (tag) {\n\t\t\tif (!tag.convertBack) {\n\t\t\t\ttag.convertBack = cvtBk;\n\t\t\t}\n\t\t\tbindTo = tag.bindTo;\n\t\t\ttagElse = tag.tagCtxs ? tag.tagCtxs.length : 1;\n\t\t}\n\t\twhile (tagElse--) {\n\t\t\tbindTos = [];\n\t\t\tif (targetPaths = targetPathsElses[tagElse]) {\n\t\t\t\tbindTo = targetPaths._jsvto ? [\"jsvto\"] : (bindTo || [0]);\n\t\t\t\tif (!tagElse && tag && tag._.ths) {\n\t\t\t\t\t// Tag has a this=expr bindign for which we will create an additional 'to' target (at index bindTo.length)\n\t\t\t\t\tbindTo = bindTo.concat(\"this\");\n\t\t\t\t}\n\t\t\t\tk = bindTo.length;\n\t\t\t\twhile (k--) {\n\t\t\t\t\tpath = \"\";\n\t\t\t\t\tcontextCb = linkCtx._ctxCb;\n\t\t\t\t\tpaths = bindTo[k];\n\t\t\t\t\tpaths = targetPaths[+paths === paths ? paths : \"_\" + paths]; // If path is a string, prepend \"_\" to avoid collision (e.g. with array.length if path is \"length\")\n\t\t\t\t\tif (pathIndex = paths && paths.length) {\n\t\t\t\t\t\tlastPath = paths[pathIndex - 1];\n\t\t\t\t\t\tif (lastPath._cpfn) { // Computed property exprOb\n\n\t\t\t\t\t\t\tbindtoOb = lastPath;\n\t\t\t\t\t\t\twhile (lastPath.sb && lastPath.sb._cpfn) {\n\t\t\t\t\t\t\t\tpath = lastPath = lastPath.sb;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpath = lastPath.sb || path && path.path;\n\t\t\t\t\t\t\tlastPath = path ? path.slice(1) : bindtoOb.path;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tto = path\n\t\t\t\t\t\t\t? [bindtoOb, // 'exprOb' for this expression and view-binding. So bindtoOb.ob is current object returned by expression.\n\t\t\t\t\t\t\t\t\tlastPath]\n\t\t\t\t\t\t\t: resolveDataTargetPath(lastPath, source, contextCb); // Get 'to' for target path: lastPath\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Contextual parameter ~foo with no external binding - has ctx.foo = [{_ocp: xxx}] and binds to ctx.foo._ocp\n\t\t\t\t\t\tlinkedCtxParam = tag.linkedCtxParam;\n\t\t\t\t\t\tto = [];\n\t\t\t\t\t\tfromIndex = tag._.fromIndex;\n\t\t\t\t\t\tif (fromIndex && linkedCtxParam && linkedCtxParam[fromIndex[k]]) {\n\t\t\t\t\t\t\t// This is a tag binding, with linked tag contextual parameters\n\t\t\t\t\t\t\tto = [tag.tagCtxs[tagElse].ctx[linkedCtxParam[fromIndex[k]]][0], _ocp];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ((obsCtxPrm = to._cxp) && obsCtxPrm.tag && lastPath.indexOf(\".\")<0) {\n\t\t\t\t\t\t// This is a binding for a tag contextual parameter (e.g. within a tag block content\n\t\t\t\t\t\tto = obsCtxPrm;\n\t\t\t\t\t}\n\t\t\t\t\tbindTos.unshift(to);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttos.unshift(bindTos);\n\t\t}\n\t\tbinding.to = tos;\n\t}\n}\n\nfunction resolveDataTargetPath(targetPath, source, contextCb) {\n\t// Iteratively process targetPath, resolving ~a.b.c paths for contextual parameters\n\tvar path, bindtoOb, to, l, obsCtxPrm, view, topCp, data;\n\n\twhile (targetPath && targetPath !== _ocp && (to = contextCb(path = targetPath.split(\"^\").join(\".\"))) && (l = to.length)) {\n\t\tif (obsCtxPrm = to[0]._cxp) { // Two-way binding to a contextual parameter reference, ~foo (declared as ~foo=expr on a parent tag)\n\t\t\ttopCp = topCp || obsCtxPrm;\n\t\t\tview = to[0][0];\n\t\t\tif (_ocp in view) {\n\t\t\t\tdata = view;\n\t\t\t\tview = view._vw;\n\t\t\t} else {\n\t\t\t\tdata = view.data;\n\t\t\t}\n\t\t\ttopCp.path = targetPath = to[0][1];\n\t\t\tto = [topCp.data = data, targetPath];\n\t\t\t\tcontextCb = $sub._gccb(view);\n\t\t\t\tif (targetPath._cpfn) { // computed property\n\t\t\t\t\tbindtoOb = targetPath;\n\t\t\t\t\tbindtoOb.data = to[0];\n\t\t\t\t\tbindtoOb._cpCtx = contextCb;\n\t\t\t\t\twhile (targetPath.sb && targetPath.sb._cpfn) {\n\t\t\t\t\t\tpath = targetPath = targetPath.sb;\n\t\t\t\t\t}\n\t\t\t\t\tpath = targetPath.sb || path && path.path;\n\t\t\t\t\ttargetPath = path ? path.slice(1) : bindtoOb.path;\n\t\t\t\t\tto = [\n\t\t\t\t\t\tbindtoOb, // 'exprOb' for this expression and view-binding. So bindtoOb.ob is current object returned by expression.\n\t\t\t\t\t\ttargetPath\n\t\t\t\t\t];\n\t\t\t\t} else if (obsCtxPrm.tag && obsCtxPrm.path === _ocp) {\n\t\t\t\t\tto = obsCtxPrm;\n\t\t\t\t}\n\t\t} else { // Two-way binding to a helper - e.g. ~address.street, or computed, e.g. ~fullName(), or view property e.g. #data.foo\n\t\t\tto = l>1\n\t\t\t\t? [to[l-2], to[l-1]] // With path: [object, path]\n\t\t\t\t: [to[l-1]]; // No path, (e.g. [function] for computed with setter)\n\t\t}\n\t\tsource = to[0];\n\t\ttargetPath = to[1];\n\t}\n\tto = to || [source, path];\n\tto._cxp = topCp;\n\treturn to;\n}\n\nfunction mergeCtxs(tag, newCtxs, replace) { // Merge updated tagCtxs into tag.tagCtxs\n\tvar tagCtx, newTagCtx, latePath,\n\t\tview = tag.tagCtx.view,\n\t\ttagCtxs = tag.tagCtxs || [tag.tagCtx],\n\t\tl = tagCtxs.length,\n\t\trefresh = !newCtxs;\n\n\tif (refresh) {\n\t\tnewCtxs = tag._.bnd.call(view.tmpl, (tag.linkCtx || view).data, view, $sub);\n\t\tif (newCtxs.lt) {\n\t\t\treturn; // We are calling tag.refresh() but a late path (@a.b.c) has not yet returned an object (@a) so cancel the refresh()\n\t\t}\n\t\ttag._.lt = undefined; // All late paths are now resolved, so this is no longer a late tag\n\t\tnewCtxs = $isArray(newCtxs) ? newCtxs : [newCtxs];\n\t}\n\n\tif (replace) {\n\t\t// Replace previous tagCtxs by new ones, rather than merging\n\t\ttagCtxs = tag.tagCtxs = newCtxs;\n\t\ttag.tagCtx = tagCtxs[0];\n\t\taddLinkMethods(tag);\n\t} else {\n\t\twhile (l--) {\n\t\t\ttagCtx = tagCtxs[l];\n\t\t\tnewTagCtx = newCtxs[l];\n\t\t\t$extend(tagCtx.ctx, newTagCtx.ctx); // We don't support propagating ctx variables, ~foo, observably, to nested views. So extend, not setProperty...\n\t\t\ttagCtx.args = newTagCtx.args;\n\t\t\tif (refresh) {\n\t\t\t\ttagCtx.tmpl = newTagCtx.tmpl;\n\t\t\t}\n\t\t\t$observable(tagCtx.props).setProperty(newTagCtx.props);\n\t\t}\n\t}\n\t$sub._thp(tag, tagCtxs[0]); // tagHandlersFromProps\n\treturn tagCtxs;\n}\n\n//=========\n// Disposal\n//=========\n\nfunction clean(elems) {\n\t// Remove data-link bindings, or contained views\n\tvar l, elem, bindings,\n\t\telemArray = [],\n\t\tlen = elems.length,\n\t\ti = len;\n\twhile (i--) {\n\t\t// Copy into an array, so that deletion of nodes from DOM will not cause our 'i' counter to get shifted\n\t\t// (Note: This seems as fast or faster than elemArray = [].slice.call(elems); ...)\n\t\telemArray.push(elems[i]);\n\t}\n\ti = len;\n\twhile (i--) {\n\t\telem = elemArray[i];\n\t\tif (elem.parentNode) {\n\t\t\t// Has not already been removed from the DOM\n\t\t\tif (bindings = elem._jsvBnd) {\n\t\t\t\t// Get propertyChange bindings for this element\n\t\t\t\t// This may be an element with data-link, or the opening script marker node for a data-linked tag {^{...}}\n\t\t\t\t// bindings is a string with the syntax: \"(&bindingId)*\"\n\t\t\t\tbindings = bindings.slice(1).split(\"&\");\n\t\t\t\telem._jsvBnd = \"\";\n\t\t\t\tl = bindings.length;\n\t\t\t\twhile (l--) {\n\t\t\t\t\t// Remove associated bindings\n\t\t\t\t\tremoveViewBinding(bindings[l], elem._jsvLkEl, elem); // unbind bindings with this bindingId on this view\n\t\t\t\t}\n\t\t\t}\n\t\t\tdisposeTokens(markerNodeInfo(elem) + (elem._df || \"\"), elem);\n\t\t}\n\t}\n}\n\nfunction removeViewBinding(bindId, linkedElemTag, elem) {\n\t// Unbind\n\tvar objId, linkCtx, tag, object, obsId, tagCtxs, l, map, linkedElem, trigger, view, tagCtx, linkedElems, allLinkedElems,\n\t\tbinding = bindingStore[bindId];\n\n\tif (linkedElemTag) {\n\t\telem._jsvLkEl = undefined;\n\t} else if (binding && (!elem || elem === binding.elem)) { // Test that elem is actually binding.elem, since cloned elements can have inappropriate markerNode info\n\t\tdelete bindingStore[bindId]; // Delete already, so call to onDispose handler below cannot trigger recursive deletion (through recursive call to jQuery cleanData)\n\t\tfor (objId in binding.bnd) {\n\t\t\tif (object = binding.bnd[objId]) {\n\t\t\t\tobsId = binding.cbId;\n\t\t\t\tif ($isArray(object)) {\n\t\t\t\t\t$([object]).off(arrayChangeStr + obsId).off(propertyChangeStr + obsId); // There may be either or both of arrayChange and propertyChange\n\t\t\t\t} else {\n\t\t\t\t\t$(object).off(propertyChangeStr + obsId);\n\t\t\t\t}\n\t\t\t\tdelete binding.bnd[objId];\n\t\t\t}\n\t\t}\n\n\t\tif (linkCtx = binding.linkCtx) {\n\t\t\tif (tag = linkCtx.tag) {\n\t\t\t\tif (tagCtxs = tag.tagCtxs) {\n\t\t\t\t\tl = tagCtxs.length;\n\t\t\t\t\twhile (l--) {\n\t\t\t\t\t\ttagCtx = tagCtxs[l];\n\t\t\t\t\t\tif (map = tagCtx.map) {\n\t\t\t\t\t\t\tmap.unmap(); //unobserve\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Copy linkedElems in case tag.linkedElem or tag.linkedElems are undefined in onUnbind\n\t\t\t\t\t\tif (linkedElems = tagCtx.linkedElems) {\n\t\t\t\t\t\t\tallLinkedElems = (allLinkedElems || []).concat(linkedElems);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (tag.onUnbind) {\n\t\t\t\t\ttag.onUnbind(tag.tagCtx, linkCtx, tag.ctx);\n\t\t\t\t}\n\t\t\t\tif (tag.onDispose) {\n\t\t\t\t\ttag.onDispose();\n\t\t\t\t}\n\n\t\t\t\tif (!tag._elCnt) {\n\t\t\t\t\tif (tag._prv) {\n\t\t\t\t\t\ttag._prv.parentNode.removeChild(tag._prv);\n\t\t\t\t\t}\n\t\t\t\t\tif (tag._nxt) {\n\t\t\t\t\t\ttag._nxt.parentNode.removeChild(tag._nxt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlinkedElems = allLinkedElems || [$(linkCtx.elem)];\n\t\t\tl = linkedElems.length;\n\t\t\twhile (l--) {\n\t\t\t\tlinkedElem = linkedElems[l];\n\t\t\t\tif (trigger = linkedElem && linkedElem[0] && linkedElem[0]._jsvTr) {\n\t\t\t\t\tbindTriggerEvent(linkedElem, trigger, \"off\");\n\t\t\t\t\tlinkedElem[0]._jsvTr = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tview = linkCtx.view;\n\t\t\tif (view.type === \"link\") {\n\t\t\t\tview.parent.removeViews(view._.key, undefined, true); // A \"link\" view is associated with the binding, so should be disposed with binding.\n\t\t\t} else {\n\t\t\t\tdelete view._.bnds[bindId];\n\t\t\t}\n\t\t}\n\t\tdelete cbBindingsStore[binding.cbId];\n\t}\n}\n\nfunction $unlink(to) {\n\tif (to) {\n\t\tto = to.jquery ? to : $(to);\n\t\tto.each(function() {\n\t\t\tvar innerView;\n\t\t\t//TODO fix this for better perf. Rather that calling inner view multiple times which does querySelectorAll each time, consider a single querySelectorAll\n\t\t\t// or simply call view.removeViews() on the top-level views under the target 'to' node, then clean(...)\n\t\t\t// And/or replace each() by for() or while()\n\t\t\twhile ((innerView = $view(this, true)) && innerView.parent) {\n\t\t\t\tinnerView.parent.removeViews(innerView._.key, undefined, true);\n\t\t\t}\n\t\t\tclean(this.getElementsByTagName(\"*\"));\n\t\t});\n\t\tclean(to);\n\t} else {\n\t\t// Call to $.unlink() is equivalent to $.unlink(true, \"body\")\n\t\tif (activeBody) {\n\t\t\t$(activeBody)\n\t\t\t\t.off(elementChangeStr, onElemChange)\n\t\t\t\t.off('blur.jsv', '[contenteditable]', onElemChange);\n\t\t\tactiveBody = undefined;\n\t\t}\n\t\ttopView.removeViews();\n\t\tclean(document.body.getElementsByTagName(\"*\"));\n\t}\n}\n\n//========\n// Helpers\n//========\n\nfunction inputAttrib(elem) {\n\treturn elem.type === CHECKBOX ? elem[CHECKED] : elem.value;\n}\n\nfunction changeHandler(view, name, tag) {\n\t// Get onBeforeChange, onAfterChange, onAfterCreate handler - if there is one;\n\treturn tag && tag[name] || view.ctx[name] && view.ctxPrm(name) || $views.helpers[name];\n}\n\n//========================== Initialize ==========================\n\n//=====================\n// JsRender integration\n//=====================\n\naddLinkMethods($sub.View.prototype); // Modify the View prototype to include link methods\n\n$sub.onStore.template = function(name, item, parentTmpl) {\n\tif (item === null) {\n\t\tdelete $.link[name];\n\t\tdelete $.render[name];\n\t} else {\n\t\titem.link = tmplLink;\n\n\t\tif (name && !parentTmpl && name !== \"jsvTmpl\") {\n\t\t\t$.render[name] = item;\n\t\t\t$.link[name] = function() {\n\t\t\t\treturn tmplLink.apply(item, arguments);\n\t\t\t};\n\t\t}\n\t}\n};\n\n$sub.viewInfos = viewInfos; // Expose viewInfos() as public helper method\n\n// Define JsViews version of delimiters(), and initialize\n($viewsSettings.delimiters = function() {\n\t// Run delimiters initialization in context of jsrender.js\n\tvar ret = oldJsvDelimiters.apply(0, arguments);\n\n\tif (oldJsvDelimiters !== $viewsDelimiters) {\n\t\t// If JsRender was loaded before JsViews, then need also to initialize and set globals in that JsRender instance\n\t\tret = $viewsDelimiters.apply(0, arguments);\n\t}\n\n\t// Data-linking must use new delimiters\n\trTagDatalink = new RegExp(\"(?:^|\\\\s*)([\\\\w-]*)(\\\\\" + linkChar + \")?(\\\\\" + delimOpenChar1 + $sub.rTag + \"(:\\\\w*)?\\\\\" + delimCloseChar0 + \")\", \"g\");\n\treturn ret;\n})(); // jshint ignore:line\n\n$sub.addSetting(\"trigger\");\n\n//====================================\n// Additional members for linked views\n//====================================\n\nfunction transferViewTokens(prevNode, nextNode, parentElem, id, viewOrTagChar, refresh) {\n\t// Transfer tokens on prevNode of viewToRemove/viewToRefresh to nextNode or parentElem._df\n\t// view marker tokens: #m_...VIEW.../m_\n\t// tag marker tokens: #m^...TAG..../m^\n\n\tvar i, l, vwInfos, vwInfo, viewOrTag, viewId, tokens,\n\t\tprecedingLength = 0,\n\t\temptyView = prevNode === nextNode;\n\n\tif (prevNode) {\n\t\t// prevNode is either the first node in the viewOrTag, or has been replaced by the vwInfos tokens string\n\t\tvwInfos = viewInfos(prevNode) || [];\n\t\tfor (i = 0, l = vwInfos.length; i < l; i++) {\n\t\t\t// Step through views or tags on the prevNode\n\t\t\tvwInfo = vwInfos[i];\n\t\t\tviewId = vwInfo.id;\n\t\t\tif (viewId === id && vwInfo.ch === viewOrTagChar) {\n\t\t\t\tif (refresh) {\n\t\t\t\t\t// This is viewOrTagToRefresh, this is the last viewOrTag to process...\n\t\t\t\t\tl = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// This is viewOrTagToRemove, so we are done...\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!emptyView) {\n\t\t\t\tviewOrTag = vwInfo.ch === \"_\"\n\t\t\t\t\t? viewStore[viewId] // A view: \"#m_\" or \"/m_\"\n\t\t\t\t\t: bindingStore[viewId].linkCtx.tag; // A tag \"#m^\" or \"/m^\"\n\t\t\t\tif (viewOrTag) {\n\t\t\t\t\tif (vwInfo.open) { // A \"#m_\" or \"#m^\" token\n\t\t\t\t\t\tviewOrTag._prv = nextNode;\n\t\t\t\t\t} else if (vwInfo.close) { // A \"/m_\" or \"/m^\" token\n\t\t\t\t\t\tviewOrTag._nxt = nextNode;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tprecedingLength += viewId.length + 2;\n\t\t}\n\n\t\tif (precedingLength) {\n\t\t\tprevNode.setAttribute(jsvAttrStr, prevNode.getAttribute(jsvAttrStr).slice(precedingLength));\n\t\t}\n\t\ttokens = nextNode ? nextNode.getAttribute(jsvAttrStr) : parentElem._df;\n\t\tif (l = tokens.indexOf(\"/\" + id + viewOrTagChar) + 1) {\n\t\t\ttokens = vwInfos._tkns.slice(0, precedingLength) + tokens.slice(l + (refresh ? -1 : id.length + 1));\n\t\t}\n\t\tif (tokens) {\n\t\t\tif (nextNode) {\n\t\t\t\t// If viewOrTagToRemove was an empty viewOrTag, we will remove both #n and /n\n\t\t\t\t// (and any intervening tokens) from the nextNode (=== prevNode)\n\t\t\t\t// If viewOrTagToRemove was not empty, we will take tokens preceding #n from prevNode,\n\t\t\t\t// and concatenate with tokens following /n on nextNode\n\t\t\t\tnextNode.setAttribute(jsvAttrStr, tokens);\n\t\t\t} else {\n\t\t\t\tsetDefer(parentElem, tokens);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// !prevNode, so there may be a deferred nodes token on the parentElem. Remove it.\n\t\tsetDefer(parentElem, removeSubStr(parentElem._df, \"#\" + id + viewOrTagChar));\n\t\tif (!refresh && !nextNode) {\n\t\t\t// If this viewOrTag is being removed, and there was no .nxt, remove closing token from deferred tokens\n\t\t\tsetDefer(parentElem, removeSubStr(parentElem._df, \"/\" + id + viewOrTagChar));\n\t\t}\n\t}\n}\n\nfunction disposeTokens(tokens, elem) {\n\tvar i, l, vwItem, vwInfos;\n\tif (vwInfos = viewInfos(tokens, true, rOpenMarkers)) {\n\t\tfor (i = 0, l = vwInfos.length; i < l; i++) {\n\t\t\tvwItem = vwInfos[i];\n\t\t\tif (vwItem.ch === \"_\") {\n\t\t\t\tif ((vwItem = viewStore[vwItem.id]) && vwItem.type && (!elem || vwItem._prv === elem || vwItem.parentElem === elem )) {\n\t\t\t\t\t// If this is the _prv (prevNode) for a view, remove the view\n\t\t\t\t\t// - unless view.type is undefined, in which case it is already being removed\n\t\t\t\t\t// (or unless the elem is not related - e.g. a cloned element which 'accidentally' picked up the data-jsv atttribute of the ._df expando)\n\t\t\t\t\tvwItem.parent.removeViews(vwItem._.key, undefined, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tremoveViewBinding(vwItem.id, undefined, elem); // unbind bindings with this bindingId on this view\n\t\t\t}\n\t\t}\n\t}\n}\n\n//============================================\n// Add link methods to data-linked view or tag\n//============================================\n\nfunction updateValue(val, index, tagElse, async, bindId, ev) {\n// async, bindId and ev not documented - used internally, e.g. for paged and sorted arrays on tags with dataMap, such as {{for}}\n// Observably update a data value targeted by the binding.to binding of a 2way data-link binding. Called when elem changes\n// Called when linkedElem of a tag control changes: as updateValue(val, index, tagElse, bindId, ev) - this: undefined\n// Called directly as tag.updateValue(val, index, tagElse) - this: tag\n\tvar self = this,\n\t\tvalues = [];\n\tif (self && self._tgId) {\n\t\tbindId = self;\n\t}\n\tif (arguments.length < 4) {\n\t\tif (+index !== index) {\n\t\t\tasync = index;\n\t\t\ttagElse = index = 0;\n\t\t} else if (+tagElse !== tagElse) {\n\t\t\tasync = tagElse;\n\t\t\ttagElse = 0;\n\t\t}\n\t}\n\tvalues[index||0] = val;\n\tupdateValues(values, tagElse, async, bindId, ev);\n\treturn self;\n}\n\nfunction setValues() {\n\t// tagCtx.setValues() calls tag.setValue() on that tagCtx for each bindTo target\n\tvar m = this.tag.bindTo.length,\n\t\tev = arguments[m],\n\t\teventArgs = arguments[m+1];\n\twhile (m--) {\n\t\tthis.tag.setValue(arguments[m], m, this.index, ev, eventArgs);\n\t}\n}\n\nfunction addLinkMethods(tagOrView) { // tagOrView is View prototype or tag instance\n\n\tvar l, m, tagCtx, boundProps, bindFrom, key, theTag, theView;\n\n\ttagOrView.contents = function(deep, select) {\n\t\t// For a view, a tag or a tagCtx, return jQuery object with the content nodes,\n\t\tif (deep !== !!deep) {\n\t\t\t// deep not boolean, so this is contents(selector)\n\t\t\tselect = deep;\n\t\t\tdeep = undefined;\n\t\t}\n\t\tvar filtered,\n\t\t\tnodes = $(this.nodes());\n\t\tif (nodes[0]) {\n\t\t\tselect = deep ? select || \"*\" : select;\n\t\t\tfiltered = select ? nodes.filter(select) : nodes;\n\t\t\tnodes = deep ? filtered.add(nodes.find(select)) : filtered;\n\t\t}\n\t\treturn nodes;\n\t};\n\n\ttagOrView.nodes = function(withMarkers, prevNode, nextNode) {\n\t\t// For a view, a tag or a tagCtx, return top-level nodes\n\t\t// Do not return any script marker nodes, unless withMarkers is true\n\t\t// Optionally limit range, by passing in prevNode or nextNode parameters\n\n\t\tvar node,\n\t\t\tself = this.contentView || this, // If tagCtx, use tagCtx.contentView\n\t\t\telCnt = self._elCnt,\n\t\t\tprevIsFirstNode = !prevNode && elCnt,\n\t\t\tnodes = [];\n\n\t\tif (!self.args) { // If tagCtx with no content (so no contentView) self is tagCtx: return empty [];\n\t\t\tprevNode = prevNode || self._prv;\n\t\t\tnextNode = nextNode || self._nxt;\n\n\t\t\tnode = prevIsFirstNode\n\t\t\t\t? (prevNode === self._nxt\n\t\t\t\t\t? self.parentElem.lastSibling\n\t\t\t\t\t: prevNode)\n\t\t\t\t: (self.inline === false\n\t\t\t\t\t? prevNode || self.linkCtx.elem.firstChild\n\t\t\t\t\t: prevNode && prevNode.nextSibling);\n\n\t\t\twhile (node && (!nextNode || node !== nextNode)) {\n\t\t\t\tif (withMarkers || elCnt || node.tagName !== SCRIPT) {\n\t\t\t\t\t// All the top-level nodes in the view\n\t\t\t\t\t// (except script marker nodes, unless withMarkers = true)\n\t\t\t\t\t// (Note: If a script marker node, viewInfo.elCnt undefined)\n\t\t\t\t\tnodes.push(node);\n\t\t\t\t}\n\t\t\t\tnode = node.nextSibling;\n\t\t\t}\n\t\t}\n\t\treturn nodes;\n\t};\n\n\ttagOrView.childTags = function(deep, tagName) {\n\t\t// For a view, a tag or a tagCtx, return child tags - at any depth, or as immediate children only.\n\t\tif (deep !== !!deep) {\n\t\t\t// deep not boolean, so this is childTags(tagName) - which looks for top-level tags of given tagName\n\t\t\ttagName = deep;\n\t\t\tdeep = undefined;\n\t\t}\n\n\t\tvar self = this.contentView || this, // If tagCtx, use tagCtx.contentView\n\t\t\tview = self.link ? self : self.tagCtx.view, // This may be a view or a tag. If a tag, get the view from tag.tagCtx.view\n\t\t\tprevNode = self._prv,\n\t\t\telCnt = self._elCnt,\n\t\t\ttags = [];\n\n\t\tif (!self.args) { // If tagCtx with no content (so no contentView) self is tagCtx: return empty [];\n\t\t\tview.link(\n\t\t\t\tundefined,\n\t\t\t\tself.parentElem,\n\t\t\t\telCnt ? prevNode && prevNode.previousSibling : prevNode,\n\t\t\t\tself._nxt,\n\t\t\t\tundefined,\n\t\t\t\t{get:{\n\t\t\t\t\ttags: tags,\n\t\t\t\t\tdeep: deep,\n\t\t\t\t\tname: tagName,\n\t\t\t\t\tid: self.link ? self._.id + \"_\" : self._tgId + \"^\"\n\t\t\t\t}}\n\t\t\t);\n\t\t}\n\t\treturn tags;\n\t};\n\n\tif (tagOrView._is === \"tag\") {\n\t\t//=======================\n\t\t// This is a TAG instance\n\t\t//=======================\n\n\t\ttheTag = tagOrView;\n\n\t\tm = theTag.tagCtxs.length;\n\t\twhile (m--) {\n\t\t\ttagCtx = theTag.tagCtxs[m];\n\n\t\t\ttagCtx.setValues = setValues;\n\t\t\ttagCtx.contents = tagOrView.contents;\n\t\t\ttagCtx.childTags = tagOrView.childTags;\n\t\t\ttagCtx.nodes = tagOrView.nodes;\n\t\t}\n\n\t\tboundProps = theTag.boundProps = theTag.boundProps || [];\n\t\tif (bindFrom = theTag.bindFrom) {\n\t\t\tl = bindFrom.length;\n\t\t\twhile (l--) {\n\t\t\t\tkey = bindFrom[l];\n\t\t\t\tif (key + \"\" === key) {\n\t\t\t\t\tbindFrom[key] = 1;\n\t\t\t\t\tif ($inArray(key, boundProps) < 0) {\n\t\t\t\t\t\tboundProps.push(key); // Add any 'bindFrom' props to boundProps array. (So two-way binding works without writing ^foo=expression)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttheTag.setValue = $sub._gm( // getMethod\n\t\t\ttheTag.constructor.prototype.setValue || function(val) { // base method\n\t\t\t\treturn val;\n\t\t\t},\n\t\t\tfunction(val, indexFrom, tagElse, ev, eventArgs) {\n\t\t\t\tindexFrom = indexFrom || 0;\n\t\t\t\ttagElse = tagElse || 0;\n\n\t\t\t\tvar linkedElem, linkedEl, linkedCtxParam, linkedCtxPrmKey, indexTo, linkedElems, newVal,\n\t\t\t\t\ttagCtx = theTag.tagCtxs[tagElse];\n\n\t\t\t\tif (tagCtx._bdArgs && (eventArgs || val !== undefined) && tagCtx._bdArgs[indexFrom]===val\n\t\t\t\t\t&& (!eventArgs || eventArgs.change !== \"set\" || ev.target !== val && eventArgs.value !== val)) {\n\n\t\t\t\t\tif (tagCtx._bdVals) { // If val is not undefined (or is coming from an observable change event), and is a value that was already returned, use stored value and don't call tag.setValue()\n\t\t\t\t\t\tval = tagCtx._bdVals[indexFrom];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Call tag method tag.setValue(), if implemented\n\t\t\t\t\ttagCtx._bdArgs = tagCtx._bdArgs || [];\n\t\t\t\t\ttagCtx._bdArgs[indexFrom] = val;\n\t\t\t\t\tnewVal = theTag.base.call(theTag, val, indexFrom, tagElse, ev, eventArgs);\n\t\t\t\t\tif (newVal !== undefined) {\n\t\t\t\t\t\ttagCtx._bdVals = tagCtx._bdVals || [];\n\t\t\t\t\t\ttagCtx._bdVals[indexFrom] = newVal; // store value, so that if same value is called later we'll use the stored value, and won't call tag.setValue()\n\t\t\t\t\t\tval = newVal;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (val !== undefined && (linkedCtxParam = theTag.linkedCtxParam) && linkedCtxParam[indexFrom]\n\t\t\t\t\t\t// If this setValue call corresponds to a tag contextual parameter and the tag has a converter, then we need to set the\n\t\t\t\t\t\t// value of this contextual parameter (since it is not directly bound to the tag argument/property when there is a converter).\n\t\t\t\t\t\t&& (linkedCtxPrmKey = linkedCtxParam[indexFrom])\n\t\t\t\t\t) {\n\t\t\t\t\ttagCtx.ctxPrm(linkedCtxPrmKey, val);\n\t\t\t\t}\n\t\t\t\tindexTo = theTag._.toIndex[indexFrom];\n\t\t\t\tif (indexTo !== undefined) {\n\t\t\t\t\tif (linkedElems = tagCtx.linkedElems || theTag.linkedElem && [theTag.linkedElem]) {\n\t\t\t\t\t\tif ((linkedElem = linkedElems[indexTo]) && (l = linkedElem.length)) {\n\t\t\t\t\t\t\twhile (l--) {\n\t\t\t\t\t\t\t\tlinkedEl = linkedElem[l];\n\t\t\t\t\t\t\t\tif (val !== undefined && !linkedEl._jsvChg && theTag.linkCtx._val !== val) {\n\t\t\t\t\t\t\t\t\tif (linkedEl.value !== undefined) {\n\t\t\t\t\t\t\t\t\t\tif (linkedEl.type === CHECKBOX) {\n\t\t\t\t\t\t\t\t\t\t\tlinkedEl[CHECKED] = $.isArray(val)\n\t\t\t\t\t\t\t\t\t\t\t\t? $.inArray(linkedEl.value, val) > -1\n\t\t\t\t\t\t\t\t\t\t\t\t: val && val !== \"false\";\n\t\t\t\t\t\t\t\t\t\t} else if (linkedEl.type === RADIO) {\n\t\t\t\t\t\t\t\t\t\t\tlinkedEl[CHECKED] = (linkedEl.value === val);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t$(linkedEl).val(val); // Use jQuery for attrHooks - can't just set value (on select, for example)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlinkedEl[linkedEl.contentEditable === TRUE ? \"innerHTML\" : TEXTCONTENT] = val;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (tagCtx.props.name) {\n\t\t\t\t\t\t\t\t\tlinkedEl.name = linkedEl.name || tagCtx.props.name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn theTag;\n\t\t\t}\n\t\t);\n\t\ttheTag.updateValue = updateValue;\n\n\t\ttheTag.updateValues = function() {\n\t\t\tvar tagElse, async,\n\t\t\t\ttag = this,\n\t\t\t\tbindToLength = tag.bindTo ? tag.bindTo.length : 1,\n\t\t\t\textra = arguments.length - bindToLength;\n\n\t\t\tif (extra) {\n\t\t\t\ttagElse = arguments[bindToLength];\n\t\t\t\tif (extra > 1) {\n\t\t\t\t\tasync = extra > 1 ? arguments[bindToLength + 1] : undefined;\n\t\t\t\t} else if (+tagElse !== tagElse) {\n\t\t\t\t\tasync = tagElse;\n\t\t\t\t\ttagElse = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn updateValues(arguments, tagElse, async, this);\n\t\t};\n\n\t\ttheTag.setValues = function() {\n\t\t// tag.setValues(a, b, c) calls tagCtx.setValues(a, b, c) on the first tagCtx\n\t\t\tsetValues.apply(theTag.tagCtx, arguments);\n\t\t\treturn theTag;\n\t\t};\n\n\t\ttheTag.refresh = function() {\n\t\t\tvar attr, sourceValue,\n\t\t\t\tlinkCtx = theTag.linkCtx,\n\t\t\t\tview = theTag.tagCtx.view;\n\n\t\t\tif (!(sourceValue = mergeCtxs(theTag))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (theTag.onUnbind) {\n\t\t\t\ttheTag.onUnbind(theTag.tagCtx, linkCtx, theTag.ctx);\n\t\t\t\ttheTag._.unlinked = true;\n\t\t\t}\n\t\t\tattr = theTag.inline ? HTML : (linkCtx.attr || defaultAttr(theTag.parentElem, true));\n\t\t\tsourceValue = theTag.tagName === \":\"\n\t\t\t\t? $sub._cnvt(theTag.convert, view, theTag.tagCtx)\n\t\t\t\t: $sub._tag(theTag, view, view.tmpl, sourceValue, true); // Get rendered HTML for tag, based on refreshed tagCtxs\n\n\t\t\tobserveAndBind(linkCtx, linkCtx.data, linkCtx.elem);\n\t\t\tupdateContent(sourceValue, linkCtx, attr, theTag);\n\t\t\tcallAfterLink(theTag);\n\t\t\treturn theTag;\n\t\t};\n\n\t\ttheTag.domChange = function() { // domChange notification support\n\t\t\tvar elem = this.parentElem,\n\t\t\t\thasListener = $._data(elem).events,\n\t\t\t\tdomChangeNotification = \"jsv-domchange\";\n\n\t\t\tif (hasListener && hasListener[domChangeNotification]) {\n\t\t\t\t// Only trigger handler if there is a handler listening for this event. (Note using triggerHandler - so no event bubbling.)\n\t\t\t\t$(elem).triggerHandler(domChangeNotification, arguments);\n\t\t\t}\n\t\t};\n\n\t\t//====================================\n\t\t// End of added link methods for TAG\n\t\t//====================================\n\t} else {\n\t\t//=========================\n\t\t// This is a VIEW prototype\n\t\t//=========================\n\n\t\ttheView = tagOrView;\n\n\t\t// Note: a linked view will also, after linking have nodes[], _prv (prevNode), _nxt (nextNode) ...\n\t\ttheView.addViews = function(index, dataItems, delayed) {\n\t\t\t// if view is not an array view, do nothing\n\t\t\tvar i, viewsCount,\n\t\t\t\tview = this,\n\t\t\t\titemsCount = dataItems.length,\n\t\t\t\tviews = view.views;\n\n\t\t\tif (!view._.useKey && itemsCount) {\n\t\t\t\t// view is of type \"array\"\n\t\t\t\tviewsCount = views.length + itemsCount;\n\n\t\t\t\tif ((delayed || viewsCount === view.data.length) // If delayed or if views not already synced to array (e.g. triggered by array.length propertyChange - jsviews/issues/301)\n\t\t\t\t\t&& renderAndLink(view, index, view.tmpl, views, dataItems, view.ctx) !== false\n\t\t\t\t\t&& !view._.srt) { // Not part of a 'sort' on refresh\n\t\t\t\t\tview.fixIndex(index + itemsCount);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\ttheView.removeViews = function(index, itemsCount, keepNodes, delayed) {\n\t\t\t// view.removeViews() removes all the child views\n\t\t\t// view.removeViews(index) removes the child view with specified index or key\n\t\t\t// view.removeViews(index, count) removes the specified nummber of child views, starting with the specified index\n\t\t\tfunction removeView(index) {\n\t\t\t\tvar id, bindId, parentElem, prevNode, nextNode, nodesToRemove,\n\t\t\t\t\tviewToRemove = views[index];\n\n\t\t\t\tif (viewToRemove && viewToRemove.link) {\n\t\t\t\t\tid = viewToRemove._.id;\n\t\t\t\t\tif (!keepNodes) {\n\t\t\t\t\t\t// Remove the HTML nodes from the DOM, unless they have already been removed, including nodes of child views\n\t\t\t\t\t\tnodesToRemove = viewToRemove.nodes();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove child views, without removing nodes\n\t\t\t\t\tviewToRemove.removeViews(undefined, undefined, true);\n\n\t\t\t\t\tviewToRemove.type = undefined; // Set type to undefined: used as a flag that this view is being removed\n\t\t\t\t\tprevNode = viewToRemove._prv;\n\t\t\t\t\tnextNode = viewToRemove._nxt;\n\t\t\t\t\tparentElem = viewToRemove.parentElem;\n\t\t\t\t\t// If prevNode and nextNode are the same, the view is empty\n\t\t\t\t\tif (!keepNodes) {\n\t\t\t\t\t\t// Remove the HTML nodes from the DOM, unless they have already been removed, including nodes of child views\n\t\t\t\t\t\tif (viewToRemove._elCnt) {\n\t\t\t\t\t\t\t// if keepNodes is false (and transferring of tokens has not already been done at a higher level)\n\t\t\t\t\t\t\t// then transfer tokens from prevNode which is being removed, to nextNode.\n\t\t\t\t\t\t\ttransferViewTokens(prevNode, nextNode, parentElem, id, \"_\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(nodesToRemove).remove();\n\t\t\t\t\t}\n\t\t\t\t\tif (!viewToRemove._elCnt && prevNode) {\n\t\t\t\t\t\tprevNode.parentNode.removeChild(prevNode); // (prevNode.parentNode is parentElem, except if jQuery Mobile or similar has inserted an intermediate wrapper\n\t\t\t\t\t\tnextNode.parentNode.removeChild(nextNode);\n\t\t\t\t\t}\n\t\t\t\t\tsetArrayChangeLink(viewToRemove);\n\t\t\t\t\tfor (bindId in viewToRemove._.bnds) {\n\t\t\t\t\t\tremoveViewBinding(bindId);\n\t\t\t\t\t}\n\t\t\t\t\tdelete viewStore[id];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar current, childView, viewsCount,\n\t\t\t\tview = this,\n\t\t\t\tisArray = !view._.useKey,\n\t\t\t\tviews = view.views;\n\n\t\t\tif (isArray) {\n\t\t\t\tviewsCount = views.length;\n\t\t\t}\n\t\t\tif (index === undefined) {\n\t\t\t\t// Remove all child views\n\t\t\t\tif (isArray) {\n\t\t\t\t\t// views and data are arrays\n\t\t\t\t\tcurrent = viewsCount;\n\t\t\t\t\twhile (current--) {\n\t\t\t\t\t\tremoveView(current);\n\t\t\t\t\t}\n\t\t\t\t\tview.views = [];\n\t\t\t\t} else {\n\t\t\t\t\t// views and data are objects\n\t\t\t\t\tfor (childView in views) {\n\t\t\t\t\t\t// Remove by key\n\t\t\t\t\t\tremoveView(childView);\n\t\t\t\t\t}\n\t\t\t\t\tview.views = {};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (itemsCount === undefined) {\n\t\t\t\t\tif (isArray) {\n\t\t\t\t\t\t// The parentView is data array view.\n\t\t\t\t\t\t// Set itemsCount to 1, to remove this item\n\t\t\t\t\t\titemsCount = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Remove child view with key 'index'\n\t\t\t\t\t\tremoveView(index);\n\t\t\t\t\t\tdelete views[index];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isArray && itemsCount\n\t\t\t\t\t&& (delayed || viewsCount - itemsCount === view.data.length)) { // If views not already synced to array (e.g. triggered by array.length propertyChange - jsviews/issues/301)\n\t\t\t\t\tcurrent = index + itemsCount;\n\t\t\t\t\t// Remove indexed items (parentView is data array view);\n\t\t\t\t\twhile (current-- > index) {\n\t\t\t\t\t\tremoveView(current);\n\t\t\t\t\t}\n\t\t\t\t\tviews.splice(index, itemsCount);\n\t\t\t\t\tif (!view._.srt) {\n\t\t\t\t\t\tview.fixIndex(index);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\ttheView.moveViews = function(oldIndex, index, itemsCount) {\n\t\t\tfunction parts(itemView, str) { // Get the totkens preceding the 'open' token for this view, #n_, and the tokens following (and including) the 'open' token\n\t\t\t\treturn RegExp(\"^(.*)(\" + (str ? \"\\\\/\" : \"#\") + itemView._.id + \"_.*)$\").exec(str || itemView._prv.getAttribute(jsvAttrStr));\n\t\t\t}\n\t\t\tfunction setPrv(itemView, tokens) {\n\t\t\t\tvar tag,\n\t\t\t\t\tprv = itemView._prv;\n\t\t\t\tprv.setAttribute(jsvAttrStr, tokens);\n\t\t\t\ttokens.replace(rTagMarkers, function(all, open, close, id) {\n\t\t\t\t\ttag = bindingStore[id].linkCtx.tag;\n\t\t\t\t\tif (tag.inline) {\n\t\t\t\t\t\ttag[open ? \"_prv\" : \"_nxt\"] = prv;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttokens.replace(rViewMarkers, function(all, open, close, id) {\n\t\t\t\t\tviewStore[id][open ? \"_prv\" : \"_nxt\"] = prv;\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar nodes, childView, nxtView, insertBefore, viewId,\n\t\t\t\tview = this,\n\t\t\t\tselfNxt = view._nxt,\n\t\t\t\tviews = view.views,\n\t\t\t\tbackwards = index < oldIndex,\n\t\t\t\tfirstChange = backwards ? index : oldIndex,\n\t\t\t\tlastChange = backwards ? oldIndex : index,\n\t\t\t\ti = index,\n\t\t\t\tmovedNodes = [],\n\n\t\t\t\tviewsToMove = views.splice(oldIndex, itemsCount); // remove\n\n\t\t\tif (index > views.length) {\n\t\t\t\tindex = views.length;\n\t\t\t}\n\t\t\tviews.splice.apply(views, [index, 0].concat(viewsToMove)); //re-insert\n\n\t\t\titemsCount = viewsToMove.length;\n\t\t\tinsertBefore = index + itemsCount;\n\t\t\tlastChange += itemsCount;\n\n\t\t\tfor (i; i < insertBefore; i++) {\n\t\t\t\tchildView = views[i];\n\t\t\t\tnodes = childView.nodes(true);\n\t\t\t\tmovedNodes = view._elCnt ? movedNodes.concat(nodes) : movedNodes.concat(childView._prv, nodes, childView._nxt);\n\t\t\t}\n\t\t\tmovedNodes = $(movedNodes);\n\n\t\t\tif (insertBefore < views.length) {\n\t\t\t\tmovedNodes.insertBefore(views[insertBefore]._prv);\n\t\t\t} else if (selfNxt) {\n\t\t\t\tmovedNodes.insertBefore(selfNxt);\n\t\t\t} else {\n\t\t\t\tmovedNodes.appendTo(view.parentElem);\n\t\t\t}\n\n\t\t\tif (view._elCnt) {\n\t\t\t\tvar afterParts,\n\t\t\t\t\tendChange = backwards ? firstChange + itemsCount : lastChange - itemsCount,\n\t\t\t\t\tbeforeView = views[firstChange-1],\n\t\t\t\t\tstartView = views[firstChange],\n\t\t\t\t\tendView = views[endChange],\n\t\t\t\t\tafterView = views[lastChange],\n\t\t\t\t\tstartParts = parts(startView),\n\t\t\t\t\tendParts = parts(endView);\n\n\t\t\t\tsetPrv(startView, endParts[1] + startParts[2]);\n\t\t\t\tif (afterView) {\n\t\t\t\t\tafterParts = parts(afterView);\n\t\t\t\t\tsetPrv(afterView, startParts[1] + afterParts[2]);\n\t\t\t\t} else {\n\t\t\t\t\tviews[lastChange-1]._nxt = selfNxt;\n\t\t\t\t\tif (selfNxt) {\n\t\t\t\t\t\tafterParts = parts(view, selfNxt.getAttribute(jsvAttrStr));\n\t\t\t\t\t\tselfNxt.setAttribute(jsvAttrStr, startParts[1] + afterParts[2]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tafterParts = parts(view, view.parentElem._df);\n\n\t\t\t\t\t\tsetDefer(view.parentElem, startParts[1] + afterParts[2]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetPrv(endView, afterParts[1] + endParts[2]);\n\t\t\t}\n\t\t\tview.fixIndex(firstChange);\n\t\t};\n\n\t\ttheView.refresh = function() {\n\t\t\tvar view = this,\n\t\t\t\tparent = view.parent;\n\n\t\t\tif (parent) {\n\t\t\t\trenderAndLink(view, view.index, view.tmpl, parent.views, view.data, undefined, true);\n\t\t\t\tsetArrayChangeLink(view);\n\t\t\t}\n\t\t\treturn view;\n\t\t};\n\n\t\ttheView.fixIndex = function(fromIndex) {\n\t\t\t// Fixup index on following view items...\n\t\t\tvar views = this.views,\n\t\t\t\tindex = views.length;\n\t\t\twhile (fromIndex < index--) {\n\t\t\t\tif (views[index].index !== index) {\n\t\t\t\t\t$observable(views[index]).setProperty(\"index\", index);\n\t\t\t\t\t// This is fixing up index, but not key, and not index on child views. From child views, use view.getIndex()\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\ttheView.link = viewLink;\n\n\t\t//====================================\n\t\t// End of added link methods for VIEW\n\t\t//====================================\n\t}\n}\n\n//========================\n// JsViews-specific converters\n//========================\n\n$converters.merge = function(val) {\n\t// Special converter used in data-linking to space-separated lists, such as className:\n\t// Currently only supports toggle semantics - and has no effect if toggle string is not specified\n\t// data-link=\"class{merge:boolExpr toggle=className}\"\n\tvar regularExpression,\n\t\tcurrentValue = this.linkCtx.elem.className,\n\t\ttoggle = this.tagCtx.props.toggle;\n\n\tif (toggle) {\n\t\t// We are toggling the class specified by the toggle property,\n\t\t// and the boolean val binding is driving the insert/remove toggle\n\n\t\tregularExpression = toggle.replace(/[\\\\^$.|?*+()[{]/g, \"\\\\$&\");\n\t\t// Escape any regular expression special characters (metacharacters) within the toggle string\n\t\tregularExpression = \"(\\\\s(?=\" + regularExpression + \"$)|(\\\\s)|^)(\" + regularExpression + \"(\\\\s|$))\";\n\t\t// Example: /(\\s(?=myclass$)|(\\s)|^)?(myclass(\\s|$))/ - so matches (\" myclass\" or \" \" or ^ ) followed by (\"myclass \" or \"myclass$\") where ^/$ are beginning/end of string\n\t\tcurrentValue = currentValue.replace(new RegExp(regularExpression), \"$2\");\n\t\tval = currentValue + (val ? (currentValue && \" \") + toggle : \"\");\n\t}\n\treturn val;\n};\n\n//========================\n// JsViews-specific tags\n//========================\n\n$tags({\n\ton: {\n\t\tattr: NONE,\n\t\tbindTo: [], // Don't need to bind to first arg, so prevent the default [0] binding\n\t\tinit: function(tagCtx) {\n\t\t\tvar content,\n\t\t\t\ttag = this,\n\t\t\t\ti = 0,\n\t\t\t\targs = tagCtx.args, // [events,] [selector,] handler\n\t\t\t\tl = args.length;\n\n\t\t\tfor (; ii && i+1; // handler index\n\t\t\tif (tag.inline) {\n\t\t\t\tif (!$sub.rTmpl.exec(content = $.trim(tagCtx.tmpl.markup))) {\n\t\t\t\t\t// Inline {^{on}} tag with no content (or external template content) or with content containing\n\t\t\t\t\t// no HTML or JsRender tags: We will wrap the (text) content, or the operation name in a \";\n\t\t\t\t}\n\t\t\t\ttag.attr = HTML;\n\t\t\t}\n\t\t},\n\t\tonBind: function() {\n\t\t\tif (this.template) { // {^{on/}} with no content has template rendering
\", \"
\"],\n\t\ttr: [2, \"\", \"
\"],\n\t\ttd: [3, \"\", \"
\"],\n\t\tcol: [2, \"\", \"
\"],\n\t\tsvg_ns: [1, \"\", \"\"],\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\tdiv: $.support.htmlSerialize ? [0, \"\", \"\"] : [1, \"X
\", \"
\"]\n\t},\n\t_fe: {\n\t\tinput: {\n\t\t\tfrom: inputAttrib, to: VALUE\n\t\t},\n\t\ttextarea: valueBinding,\n\t\tselect: valueBinding,\n\t\toptgroup: {\n\t\t\tto: \"label\"\n\t\t}\n\t}\n});\n\nreturn $;\n}, window));"]}