# HG changeset patch # User Drew Perttula # Date 1362640998 28800 # Node ID 7df920c18c8346084920f56b06523aee22c7fdae # Parent be339aa223bf00b4baf98b3fc7b8acd0e3469e4e move lib js Ignore-this: 32945b67a25dcd8d720f13475cbbf9ff diff -r be339aa223bf -r 7df920c18c83 static/knockout-2.2.0.debug.js --- a/static/knockout-2.2.0.debug.js Wed Mar 06 23:22:24 2013 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,400 +0,0 @@ -(function(){var DEBUG=true;(function(window,document,navigator,jQuery,undefined){!function(factory){if(typeof require==='function'&&typeof exports==='object'&&typeof module==='object'){var target=module['exports']||exports;factory(target);}else if(typeof define==='function'&&define['amd']){define(['exports'],factory);}else{factory(window['ko']={});}}(function(koExports){var ko=typeof koExports!=='undefined'?koExports:{};ko.exportSymbol=function(koPath,object){var tokens=koPath.split(".");var target=ko;for(var i=0;i',iElems[0]);return version>4?version:undefined;}());var isIe6=ieVersion===6,isIe7=ieVersion===7;function isClickOnCheckableElement(element,eventType){if((ko.utils.tagNameLower(element)!=="input")||!element.type)return false;if(eventType.toLowerCase()!="click")return false;var inputType=element.type; return(inputType=="checkbox")||(inputType=="radio");} -return{fieldsIncludedWithJsonPost:['authenticity_token',/^__RequestVerificationToken(_.*)?$/],arrayForEach:function(array,action){for(var i=0,j=array.length;i=0) -array.splice(index,1);},arrayGetDistinctValues:function(array){array=array||[];var result=[];for(var i=0,j=array.length;i0){var insertionPoint=nodesToReplaceArray[0];var parent=insertionPoint.parentNode;for(var i=0,j=newNodesArray.length;istring.length) -return false;return string.substring(0,startsWith.length)===startsWith;},domNodeIsContainedBy:function(node,containedByNode){if(containedByNode.compareDocumentPosition) -return(containedByNode.compareDocumentPosition(node)&16)==16;while(node!=null){if(node==containedByNode) -return true;node=node.parentNode;} -return false;},domNodeIsAttachedToDocument:function(node){return ko.utils.domNodeIsContainedBy(node,node.ownerDocument);},tagNameLower:function(element){ -return element&&element.tagName&&element.tagName.toLowerCase();},registerEventHandler:function(element,eventType,handler){var mustUseAttachEvent=ieVersion&&eventsThatMustBeRegisteredUsingAttachEvent[eventType];if(!mustUseAttachEvent&&typeof jQuery!="undefined"){if(isClickOnCheckableElement(element,eventType)){var originalHandler=handler;handler=function(event,eventData){var jQuerySuppliedCheckedState=this.checked;if(eventData) -this.checked=eventData.checkedStateBeforeEvent!==true;originalHandler.call(this,event);this.checked=jQuerySuppliedCheckedState;};} -jQuery(element)['bind'](eventType,handler);}else if(!mustUseAttachEvent&&typeof element.addEventListener=="function") -element.addEventListener(eventType,handler,false);else if(typeof element.attachEvent!="undefined") -element.attachEvent("on"+eventType,function(event){handler.call(element,event);});else -throw new Error("Browser doesn't support addEventListener or attachEvent");},triggerEvent:function(element,eventType){ if(!(element&&element.nodeType)) -throw new Error("element must be a DOM node when calling triggerEvent");if(typeof jQuery!="undefined"){var eventData=[];if(isClickOnCheckableElement(element,eventType)){eventData.push({checkedStateBeforeEvent:element.checked});} -jQuery(element)['trigger'](eventType,eventData);}else if(typeof document.createEvent=="function"){if(typeof element.dispatchEvent=="function"){var eventCategory=knownEventTypesByEventName[eventType]||"HTMLEvents";var event=document.createEvent(eventCategory);event.initEvent(eventType,true,true,window,0,0,0,0,0,false,false,false,false,0,element);element.dispatchEvent(event);} -else -throw new Error("The supplied element doesn't support dispatchEvent");}else if(typeof element.fireEvent!="undefined"){if(isClickOnCheckableElement(element,eventType)) -element.checked=element.checked!==true;element.fireEvent("on"+eventType);} -else -throw new Error("Browser doesn't support triggering events");},unwrapObservable:function(value){return ko.isObservable(value)?value():value;},peekObservable:function(value){return ko.isObservable(value)?value.peek():value;},toggleDomNodeCssClass:function(node,classNames,shouldHaveClass){if(classNames){var cssClassNameRegex=/[\w-]+/g,currentClassNames=node.className.match(cssClassNameRegex)||[];ko.utils.arrayForEach(classNames.match(cssClassNameRegex),function(className){var indexOfClass=ko.utils.arrayIndexOf(currentClassNames,className);if(indexOfClass>=0){if(!shouldHaveClass) -currentClassNames.splice(indexOfClass,1);}else{if(shouldHaveClass) -currentClassNames.push(className);}});node.className=currentClassNames.join(" ");}},setTextContent:function(element,textContent){var value=ko.utils.unwrapObservable(textContent);if((value===null)||(value===undefined)) -value="";if(element.nodeType===3){element.data=value;}else{var innerTextNode=ko.virtualElements.firstChild(element);if(!innerTextNode||innerTextNode.nodeType!=3||ko.virtualElements.nextSibling(innerTextNode)){ko.virtualElements.setDomNodeChildren(element,[document.createTextNode(value)]);}else{innerTextNode.data=value;} -ko.utils.forceRefresh(element);}},setElementName:function(element,name){element.name=name;// -if(ieVersion<=7){try{element.mergeAttributes(document.createElement(""),false);} -catch(e){}}},forceRefresh:function(node){if(ieVersion>=9){var elem=node.nodeType==1?node:node.parentNode;if(elem.style) -elem.style.zoom=elem.style.zoom;}},ensureSelectElementIsRenderedCorrectly:function(selectElement){if(ieVersion>=9){var originalWidth=selectElement.style.width;selectElement.style.width=0;selectElement.style.width=originalWidth;}},range:function(min,max){min=ko.utils.unwrapObservable(min);max=ko.utils.unwrapObservable(max);var result=[];for(var i=min;i<=max;i++) -result.push(i);return result;},makeArray:function(arrayLikeObject){var result=[];for(var i=0,j=arrayLikeObject.length;i=0;i--){if(isMatchingField(fields[i])) -matches.push(fields[i]);};return matches;},parseJson:function(jsonString){if(typeof jsonString=="string"){jsonString=ko.utils.stringTrim(jsonString);if(jsonString){if(window.JSON&&window.JSON.parse) -return window.JSON.parse(jsonString);return(new Function("return "+jsonString))();}} -return null;},stringifyJson:function(data,replacer,space){if((typeof JSON=="undefined")||(typeof JSON.stringify=="undefined")) -throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return JSON.stringify(ko.utils.unwrapObservable(data),replacer,space);},postJson:function(urlOrForm,data,options){options=options||{};var params=options['params']||{};var includeFields=options['includeFields']||this.fieldsIncludedWithJsonPost;var url=urlOrForm;if((typeof urlOrForm=='object')&&(ko.utils.tagNameLower(urlOrForm)==="form")){var originalForm=urlOrForm;url=originalForm.action;for(var i=includeFields.length-1;i>=0;i--){var fields=ko.utils.getFormFields(originalForm,includeFields[i]);for(var j=fields.length-1;j>=0;j--) -params[fields[j].name]=fields[j].value;}} -data=ko.utils.unwrapObservable(data);var form=document.createElement("form");form.style.display="none";form.action=url;form.method="post";for(var key in data){var input=document.createElement("input");input.name=key;input.value=ko.utils.stringifyJson(ko.utils.unwrapObservable(data[key]));form.appendChild(input);} -for(var key in params){var input=document.createElement("input");input.name=key;input.value=params[key];form.appendChild(input);} -document.body.appendChild(form);options['submitter']?options['submitter'](form):form.submit();setTimeout(function(){form.parentNode.removeChild(form);},0);}}})();ko.exportSymbol('utils',ko.utils);ko.exportSymbol('utils.arrayForEach',ko.utils.arrayForEach);ko.exportSymbol('utils.arrayFirst',ko.utils.arrayFirst);ko.exportSymbol('utils.arrayFilter',ko.utils.arrayFilter);ko.exportSymbol('utils.arrayGetDistinctValues',ko.utils.arrayGetDistinctValues);ko.exportSymbol('utils.arrayIndexOf',ko.utils.arrayIndexOf);ko.exportSymbol('utils.arrayMap',ko.utils.arrayMap);ko.exportSymbol('utils.arrayPushAll',ko.utils.arrayPushAll);ko.exportSymbol('utils.arrayRemoveItem',ko.utils.arrayRemoveItem);ko.exportSymbol('utils.extend',ko.utils.extend);ko.exportSymbol('utils.fieldsIncludedWithJsonPost',ko.utils.fieldsIncludedWithJsonPost);ko.exportSymbol('utils.getFormFields',ko.utils.getFormFields);ko.exportSymbol('utils.peekObservable',ko.utils.peekObservable);ko.exportSymbol('utils.postJson',ko.utils.postJson);ko.exportSymbol('utils.parseJson',ko.utils.parseJson);ko.exportSymbol('utils.registerEventHandler',ko.utils.registerEventHandler);ko.exportSymbol('utils.stringifyJson',ko.utils.stringifyJson);ko.exportSymbol('utils.range',ko.utils.range);ko.exportSymbol('utils.toggleDomNodeCssClass',ko.utils.toggleDomNodeCssClass);ko.exportSymbol('utils.triggerEvent',ko.utils.triggerEvent);ko.exportSymbol('utils.unwrapObservable',ko.utils.unwrapObservable);if(!Function.prototype['bind']){// -Function.prototype['bind']=function(object){var originalFunction=this,args=Array.prototype.slice.call(arguments),object=args.shift();return function(){return originalFunction.apply(object,args.concat(Array.prototype.slice.call(arguments)));};};} -ko.utils.domData=new(function(){var uniqueId=0;var dataStoreKeyExpandoPropertyName="__ko__"+(new Date).getTime();var dataStore={};return{get:function(node,key){var allDataForNode=ko.utils.domData.getAll(node,false);return allDataForNode===undefined?undefined:allDataForNode[key];},set:function(node,key,value){if(value===undefined){if(ko.utils.domData.getAll(node,false)===undefined) -return;} -var allDataForNode=ko.utils.domData.getAll(node,true);allDataForNode[key]=value;},getAll:function(node,createIfNotFound){var dataStoreKey=node[dataStoreKeyExpandoPropertyName];var hasExistingDataStore=dataStoreKey&&(dataStoreKey!=="null")&&dataStore[dataStoreKey];if(!hasExistingDataStore){if(!createIfNotFound) -return undefined;dataStoreKey=node[dataStoreKeyExpandoPropertyName]="ko"+uniqueId++;dataStore[dataStoreKey]={};} -return dataStore[dataStoreKey];},clear:function(node){var dataStoreKey=node[dataStoreKeyExpandoPropertyName];if(dataStoreKey){delete dataStore[dataStoreKey];node[dataStoreKeyExpandoPropertyName]=null;return true;} -return false;}}})();ko.exportSymbol('utils.domData',ko.utils.domData);ko.exportSymbol('utils.domData.clear',ko.utils.domData.clear);ko.utils.domNodeDisposal=new(function(){var domDataKey="__ko_domNodeDisposal__"+(new Date).getTime();var cleanableNodeTypes={1:true,8:true,9:true};var cleanableNodeTypesWithDescendants={1:true,9:true};function getDisposeCallbacksCollection(node,createIfNotFound){var allDisposeCallbacks=ko.utils.domData.get(node,domDataKey);if((allDisposeCallbacks===undefined)&&createIfNotFound){allDisposeCallbacks=[];ko.utils.domData.set(node,domDataKey,allDisposeCallbacks);} -return allDisposeCallbacks;} -function destroyCallbacksCollection(node){ko.utils.domData.set(node,domDataKey,undefined);} -function cleanSingleNode(node){var callbacks=getDisposeCallbacksCollection(node,false);if(callbacks){callbacks=callbacks.slice(0);for(var i=0;i/;function simpleHtmlParse(html){//-->abc" will get parsed as "
abc
" -var tags=ko.utils.stringTrim(html).toLowerCase(),div=document.createElement("div");var wrap=tags.match(/^<(thead|tbody|tfoot)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||[0,"",""];var markup="ignored
"+wrap[1]+html+wrap[2]+"
";if(typeof window['innerShiv']=="function"){div.appendChild(window['innerShiv'](markup));}else{div.innerHTML=markup;} -while(wrap[0]--) -div=div.lastChild;return ko.utils.makeArray(div.lastChild.childNodes);} -function jQueryHtmlParse(html){var elems=jQuery['clean']([html]);if(elems&&elems[0]){var elem=elems[0];while(elem.parentNode&&elem.parentNode.nodeType!==11) -elem=elem.parentNode;if(elem.parentNode) -elem.parentNode.removeChild(elem);} -return elems;} -ko.utils.parseHtmlFragment=function(html){return typeof jQuery!='undefined'?jQueryHtmlParse(html) -:simpleHtmlParse(html);};ko.utils.setHtml=function(node,html){ko.utils.emptyDomNode(node);html=ko.utils.unwrapObservable(html);if((html!==null)&&(html!==undefined)){if(typeof html!='string') -html=html.toString();if(typeof jQuery!='undefined'){jQuery(node)['html'](html);}else{var parsedNodes=ko.utils.parseHtmlFragment(html);for(var i=0;i";},unmemoize:function(memoId,callbackParams){var callback=memos[memoId];if(callback===undefined) -throw new Error("Couldn't find any memo with ID "+memoId+". Perhaps it's already been unmemoized.");try{callback.apply(null,callbackParams||[]);return true;} -finally{delete memos[memoId];}},unmemoizeDomNodeAndDescendants:function(domNode,extraCallbackParamsArray){var memos=[];findMemoNodes(domNode,memos);for(var i=0,j=memos.length;i0){var topFrame=_frames[_frames.length-1];if(!topFrame||ko.utils.arrayIndexOf(topFrame.distinctDependencies,subscribable)>=0) -return;topFrame.distinctDependencies.push(subscribable);topFrame.callback(subscribable);}},ignore:function(callback,callbackTarget,callbackArgs){try{_frames.push(null);return callback.apply(callbackTarget,callbackArgs||[]);}finally{_frames.pop();}}};})();var primitiveTypes={'undefined':true,'boolean':true,'number':true,'string':true};ko.observable=function(initialValue){var _latestValue=initialValue;function observable(){if(arguments.length>0){if((!observable['equalityComparer'])||!observable['equalityComparer'](_latestValue,arguments[0])){observable.valueWillMutate();_latestValue=arguments[0];if(DEBUG)observable._latestValue=_latestValue;observable.valueHasMutated();} -return this;} -else{ko.dependencyDetection.registerDependency(observable);return _latestValue;}} -if(DEBUG)observable._latestValue=_latestValue;ko.subscribable.call(observable);observable.peek=function(){return _latestValue};observable.valueHasMutated=function(){observable["notifySubscribers"](_latestValue);} -observable.valueWillMutate=function(){observable["notifySubscribers"](_latestValue,"beforeChange");} -ko.utils.extend(observable,ko.observable['fn']);ko.exportProperty(observable,'peek',observable.peek);ko.exportProperty(observable,"valueHasMutated",observable.valueHasMutated);ko.exportProperty(observable,"valueWillMutate",observable.valueWillMutate);return observable;} -ko.observable['fn']={"equalityComparer":function valuesArePrimitiveAndEqual(a,b){var oldValueIsPrimitive=(a===null)||(typeof(a)in primitiveTypes);return oldValueIsPrimitive?(a===b):false;}};var protoProperty=ko.observable.protoProperty="__ko_proto__";ko.observable['fn'][protoProperty]=ko.observable;ko.hasPrototype=function(instance,prototype){if((instance===null)||(instance===undefined)||(instance[protoProperty]===undefined))return false;if(instance[protoProperty]===prototype)return true;return ko.hasPrototype(instance[protoProperty],prototype);};ko.isObservable=function(instance){return ko.hasPrototype(instance,ko.observable);} -ko.isWriteableObservable=function(instance){if((typeof instance=="function")&&instance[protoProperty]===ko.observable) -return true;if((typeof instance=="function")&&(instance[protoProperty]===ko.dependentObservable)&&(instance.hasWriteFunction)) -return true;return false;} -ko.exportSymbol('observable',ko.observable);ko.exportSymbol('isObservable',ko.isObservable);ko.exportSymbol('isWriteableObservable',ko.isWriteableObservable);ko.observableArray=function(initialValues){if(arguments.length==0){initialValues=[];} -if((initialValues!==null)&&(initialValues!==undefined)&&!('length' in initialValues)) -throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");var result=ko.observable(initialValues);ko.utils.extend(result,ko.observableArray['fn']);return result;} -ko.observableArray['fn']={'remove':function(valueOrPredicate){var underlyingArray=this.peek();var removedValues=[];var predicate=typeof valueOrPredicate=="function"?valueOrPredicate:function(value){return value===valueOrPredicate;};for(var i=0;i=0;});},'destroy':function(valueOrPredicate){var underlyingArray=this.peek();var predicate=typeof valueOrPredicate=="function"?valueOrPredicate:function(value){return value===valueOrPredicate;};this.valueWillMutate();for(var i=underlyingArray.length-1;i>=0;i--){var value=underlyingArray[i];if(predicate(value)) -underlyingArray[i]["_destroy"]=true;} -this.valueHasMutated();},'destroyAll':function(arrayOfValues){if(arrayOfValues===undefined) -return this['destroy'](function(){return true});// -if(!arrayOfValues) -return[];return this['destroy'](function(value){return ko.utils.arrayIndexOf(arrayOfValues,value)>=0;});},'indexOf':function(item){var underlyingArray=this();return ko.utils.arrayIndexOf(underlyingArray,item);},'replace':function(oldItem,newItem){var index=this['indexOf'](oldItem);if(index>=0){this.valueWillMutate();this.peek()[index]=newItem;this.valueHasMutated();}}} -ko.utils.arrayForEach(["pop","push","reverse","shift","sort","splice","unshift"],function(methodName){ko.observableArray['fn'][methodName]=function(){var underlyingArray=this.peek();this.valueWillMutate();var methodCallResult=underlyingArray[methodName].apply(underlyingArray,arguments);this.valueHasMutated();return methodCallResult;};});ko.utils.arrayForEach(["slice"],function(methodName){ko.observableArray['fn'][methodName]=function(){var underlyingArray=this();return underlyingArray[methodName].apply(underlyingArray,arguments);};});ko.exportSymbol('observableArray',ko.observableArray);ko.dependentObservable=function(evaluatorFunctionOrOptions,evaluatorFunctionTarget,options){var _latestValue,_hasBeenEvaluated=false,_isBeingEvaluated=false, readFunction=evaluatorFunctionOrOptions;if(readFunction&&typeof readFunction=="object"){options=readFunction;readFunction=options["read"];}else{options=options||{};if(!readFunction) -readFunction=options["read"];} -if(typeof readFunction!="function") -throw new Error("Pass a function that returns the value of the ko.computed");function addSubscriptionToDependency(subscribable){_subscriptionsToDependencies.push(subscribable.subscribe(evaluatePossiblyAsync));} -function disposeAllSubscriptionsToDependencies(){ko.utils.arrayForEach(_subscriptionsToDependencies,function(subscription){subscription.dispose();});_subscriptionsToDependencies=[];} -function evaluatePossiblyAsync(){var throttleEvaluationTimeout=dependentObservable['throttleEvaluation'];if(throttleEvaluationTimeout&&throttleEvaluationTimeout>=0){clearTimeout(evaluationTimeoutInstance);evaluationTimeoutInstance=setTimeout(evaluateImmediate,throttleEvaluationTimeout);}else -evaluateImmediate();} -function evaluateImmediate(){if(_isBeingEvaluated){return;}// -if(_hasBeenEvaluated&&disposeWhen()){dispose();return;} -_isBeingEvaluated=true;try{var disposalCandidates=ko.utils.arrayMap(_subscriptionsToDependencies,function(item){return item.target;});ko.dependencyDetection.begin(function(subscribable){var inOld;if((inOld=ko.utils.arrayIndexOf(disposalCandidates,subscribable))>=0) -disposalCandidates[inOld]=undefined;else -addSubscriptionToDependency(subscribable);});var newValue=readFunction.call(evaluatorFunctionTarget);for(var i=disposalCandidates.length-1;i>=0;i--){if(disposalCandidates[i]) -_subscriptionsToDependencies.splice(i,1)[0].dispose();} -_hasBeenEvaluated=true;dependentObservable["notifySubscribers"](_latestValue,"beforeChange");_latestValue=newValue;if(DEBUG)dependentObservable._latestValue=_latestValue;}finally{ko.dependencyDetection.end();} -dependentObservable["notifySubscribers"](_latestValue);_isBeingEvaluated=false;if(!_subscriptionsToDependencies.length) -dispose();} -function dependentObservable(){if(arguments.length>0){if(typeof writeFunction==="function"){writeFunction.apply(evaluatorFunctionTarget,arguments);}else{throw new Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");} -return this;}else{if(!_hasBeenEvaluated) -evaluateImmediate();ko.dependencyDetection.registerDependency(dependentObservable);return _latestValue;}} -function peek(){if(!_hasBeenEvaluated) -evaluateImmediate();return _latestValue;} -function isActive(){return!_hasBeenEvaluated||_subscriptionsToDependencies.length>0;} -var writeFunction=options["write"],disposeWhenNodeIsRemoved=options["disposeWhenNodeIsRemoved"]||options.disposeWhenNodeIsRemoved||null,disposeWhen=options["disposeWhen"]||options.disposeWhen||function(){return false;},dispose=disposeAllSubscriptionsToDependencies,_subscriptionsToDependencies=[],evaluationTimeoutInstance=null;if(!evaluatorFunctionTarget) -evaluatorFunctionTarget=options["owner"];dependentObservable.peek=peek;dependentObservable.getDependenciesCount=function(){return _subscriptionsToDependencies.length;};dependentObservable.hasWriteFunction=typeof options["write"]==="function";dependentObservable.dispose=function(){dispose();};dependentObservable.isActive=isActive;ko.subscribable.call(dependentObservable);ko.utils.extend(dependentObservable,ko.dependentObservable['fn']);ko.exportProperty(dependentObservable,'peek',dependentObservable.peek);ko.exportProperty(dependentObservable,'dispose',dependentObservable.dispose);ko.exportProperty(dependentObservable,'isActive',dependentObservable.isActive);ko.exportProperty(dependentObservable,'getDependenciesCount',dependentObservable.getDependenciesCount);if(options['deferEvaluation']!==true) -evaluateImmediate();if(disposeWhenNodeIsRemoved&&isActive()){dispose=function(){ko.utils.domNodeDisposal.removeDisposeCallback(disposeWhenNodeIsRemoved,arguments.callee);disposeAllSubscriptionsToDependencies();};ko.utils.domNodeDisposal.addDisposeCallback(disposeWhenNodeIsRemoved,dispose);var existingDisposeWhenFunction=disposeWhen;disposeWhen=function(){return!ko.utils.domNodeIsAttachedToDocument(disposeWhenNodeIsRemoved)||existingDisposeWhenFunction();}} -return dependentObservable;};ko.isComputed=function(instance){return ko.hasPrototype(instance,ko.dependentObservable);};var protoProp=ko.observable.protoProperty;ko.dependentObservable[protoProp]=ko.observable;ko.dependentObservable['fn']={};ko.dependentObservable['fn'][protoProp]=ko.dependentObservable;ko.exportSymbol('dependentObservable',ko.dependentObservable);ko.exportSymbol('computed',ko.dependentObservable);ko.exportSymbol('isComputed',ko.isComputed);(function(){var maxNestedObservableDepth=10;ko.toJS=function(rootObject){if(arguments.length==0) -throw new Error("When calling ko.toJS, pass the object you want to convert.");return mapJsObjectGraph(rootObject,function(valueToMap){for(var i=0;ko.isObservable(valueToMap)&&(i=0) -values[existingIndex]=value;else{keys.push(key);values.push(value);}};this.get=function(key){var existingIndex=ko.utils.arrayIndexOf(keys,key);return(existingIndex>=0)?values[existingIndex]:undefined;};};})();ko.exportSymbol('toJS',ko.toJS);ko.exportSymbol('toJSON',ko.toJSON);(function(){var hasDomDataExpandoProperty='__ko__hasDomDataOptionValue__';ko.selectExtensions={readValue:function(element){switch(ko.utils.tagNameLower(element)){case 'option':if(element[hasDomDataExpandoProperty]===true) -return ko.utils.domData.get(element,ko.bindingHandlers.options.optionValueDomDataKey);return ko.utils.ieVersion<=7?(element.getAttributeNode('value').specified?element.value:element.text):element.value;case 'select':return element.selectedIndex>=0?ko.selectExtensions.readValue(element.options[element.selectedIndex]):undefined;default:return element.value;}},writeValue:function(element,value){switch(ko.utils.tagNameLower(element)){case 'option':switch(typeof value){case "string":ko.utils.domData.set(element,ko.bindingHandlers.options.optionValueDomDataKey,undefined);if (hasDomDataExpandoProperty in element){delete element[hasDomDataExpandoProperty];} -element.value=value;break;default:ko.utils.domData.set(element,ko.bindingHandlers.options.optionValueDomDataKey,value);element[hasDomDataExpandoProperty]=true;element.value=typeof value==="number"?value:"";break;} -break;case 'select':for(var i=element.options.length-1;i>=0;i--){if(ko.selectExtensions.readValue(element.options[i])==value){element.selectedIndex=i;break;}} -break;default:if((value===null)||(value===undefined)) -value="";element.value=value;break;}}};})();ko.exportSymbol('selectExtensions',ko.selectExtensions);ko.exportSymbol('selectExtensions.readValue',ko.selectExtensions.readValue);ko.exportSymbol('selectExtensions.writeValue',ko.selectExtensions.writeValue);ko.expressionRewriting=(function(){var restoreCapturedTokensRegex=/\@ko_token_(\d+)\@/g;var javaScriptReservedWords=["true","false"];// -var javaScriptAssignmentTarget=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i;function restoreTokens(string,tokens){var prevValue=null;while(string!=prevValue){prevValue=string;string=string.replace(restoreCapturedTokensRegex,function(match,tokenIndex){return tokens[tokenIndex];});} -return string;} -function getWriteableValue(expression){if(ko.utils.arrayIndexOf(javaScriptReservedWords,ko.utils.stringTrim(expression).toLowerCase())>=0) -return false;var match=expression.match(javaScriptAssignmentTarget);return match===null?false:match[1]?('Object('+match[1]+')'+match[2]):expression;} -function ensureQuoted(key){var trimmedKey=ko.utils.stringTrim(key);switch(trimmedKey.length&&trimmedKey.charAt(0)){case "'":case '"':return key;default:return "'"+trimmedKey+"'";}} -return{bindingRewriteValidators:[],parseObjectLiteral:function(objectLiteralString){var str=ko.utils.stringTrim(objectLiteralString);if(str.length<3) -return[];if(str.charAt(0)==="{") -str=str.substring(1,str.length-1);var tokens=[];var tokenStart=null,tokenEndChar;for(var position=0;position< str.length;position++){var c=str.charAt(position);if(tokenStart===null){switch(c){case '"':case "'":case "/":tokenStart=position;tokenEndChar=c;break;}}else if((c==tokenEndChar)&&(str.charAt(position-1)!=="\\")){var token=str.substring(tokenStart,position+1);tokens.push(token);var replacement="@ko_token_"+(tokens.length-1)+"@";str=str.substring(0,tokenStart)+replacement+str.substring(position+1);position-=(token.length-replacement.length);tokenStart=null;}} -tokenStart=null;tokenEndChar=null;var tokenDepth=0,tokenStartChar=null;for(var position=0;position0)&&(colonPos0) -resultStrings.push(",");if(keyValueEntry['key']){var quotedKey=ensureQuoted(keyValueEntry['key']),val=keyValueEntry['value'];resultStrings.push(quotedKey);resultStrings.push(":");resultStrings.push(val);if(val=getWriteableValue(ko.utils.stringTrim(val))){if(propertyAccessorResultStrings.length>0) -propertyAccessorResultStrings.push(", ");propertyAccessorResultStrings.push(quotedKey+" : function(__ko_value) { "+val+" = __ko_value; }");}}else if(keyValueEntry['unknown']){resultStrings.push(keyValueEntry['unknown']);}} -var combinedResult=resultStrings.join("");if(propertyAccessorResultStrings.length>0){var allPropertyAccessors=propertyAccessorResultStrings.join("");combinedResult=combinedResult+", '_ko_property_writers' : { "+allPropertyAccessors+" } ";} -return combinedResult;},keyValueArrayContainsKey:function(keyValueArray,key){for(var i=0;iblah) -var commentNodesHaveTextProperty=document.createComment("test").text==="";var startCommentRegex=commentNodesHaveTextProperty?/^$/:/^\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*$/;var endCommentRegex=commentNodesHaveTextProperty?/^$/:/^\s*\/ko\s*$/;var htmlTagsWithOptionallyClosingChildren={'ul':true,'ol':true};function isStartComment(node){return(node.nodeType==8)&&(commentNodesHaveTextProperty?node.text:node.nodeValue).match(startCommentRegex);} -function isEndComment(node){return(node.nodeType==8)&&(commentNodesHaveTextProperty?node.text:node.nodeValue).match(endCommentRegex);} -function getVirtualChildren(startComment,allowUnbalanced){var currentNode=startComment;var depth=1;var children=[];while(currentNode=currentNode.nextSibling){if(isEndComment(currentNode)){depth--;if(depth===0) -return children;} -children.push(currentNode);if(isStartComment(currentNode)) -depth++;} -if(!allowUnbalanced) -throw new Error("Cannot find closing comment tag to match: "+startComment.nodeValue);return null;} -function getMatchingEndComment(startComment,allowUnbalanced){var allVirtualChildren=getVirtualChildren(startComment,allowUnbalanced);if(allVirtualChildren){if(allVirtualChildren.length>0) -return allVirtualChildren[allVirtualChildren.length-1].nextSibling;return startComment.nextSibling;}else -return null;} -function getUnbalancedChildTags(node){//-->Another, returns: Another -//-->, returns: -var childNode=node.firstChild,captureRemaining=null;if(childNode){do{if(captureRemaining) -captureRemaining.push(childNode);else if(isStartComment(childNode)){var matchingEndComment=getMatchingEndComment(childNode,true);if(matchingEndComment) -childNode=matchingEndComment;else -captureRemaining=[childNode];}else if(isEndComment(childNode)){captureRemaining=[childNode];}}while(childNode=childNode.nextSibling);} -return captureRemaining;} -ko.virtualElements={allowedBindings:{},childNodes:function(node){return isStartComment(node)?getVirtualChildren(node):node.childNodes;},emptyNode:function(node){if(!isStartComment(node)) -ko.utils.emptyDomNode(node);else{var virtualChildren=ko.virtualElements.childNodes(node);for(var i=0,j=virtualChildren.length;i=0)) -modelValue.splice(existingEntryIndex,1);}else{ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'checked',valueToWrite,true);}};ko.utils.registerEventHandler(element,"click",updateHandler);if((element.type=="radio")&&!element.name) -ko.bindingHandlers['uniqueName']['init'](element,function(){return true});},'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(element.type=="checkbox"){if(value instanceof Array){element.checked=ko.utils.arrayIndexOf(value,element.value)>=0;}else{ element.checked=value;}}else if(element.type=="radio"){element.checked=(element.value==value);}}};var classesWrittenByBindingKey='__ko__cssValue';ko.bindingHandlers['css']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(typeof value=="object"){for(var className in value){var shouldHaveClass=ko.utils.unwrapObservable(value[className]);ko.utils.toggleDomNodeCssClass(element,className,shouldHaveClass);}}else{value=String(value||'');ko.utils.toggleDomNodeCssClass(element,element[classesWrittenByBindingKey],false);element[classesWrittenByBindingKey]=value;ko.utils.toggleDomNodeCssClass(element,value,true);}}};ko.bindingHandlers['enable']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(value&&element.disabled) -element.removeAttribute("disabled");else if((!value)&&(!element.disabled)) -element.disabled=true;}};ko.bindingHandlers['disable']={'update':function(element,valueAccessor){ko.bindingHandlers['enable']['update'](element,function(){return!ko.utils.unwrapObservable(valueAccessor())});}};function makeEventHandlerShortcut(eventName){ko.bindingHandlers[eventName]={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){var newValueAccessor=function(){var result={};result[eventName]=valueAccessor();return result;};return ko.bindingHandlers['event']['init'].call(this,element,newValueAccessor,allBindingsAccessor,viewModel);}}} -ko.bindingHandlers['event']={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){var eventsToHandle=valueAccessor()||{};for(var eventNameOutsideClosure in eventsToHandle){(function(){var eventName=eventNameOutsideClosure;if(typeof eventName=="string"){ko.utils.registerEventHandler(element,eventName,function(event){var handlerReturnValue;var handlerFunction=valueAccessor()[eventName];if(!handlerFunction) -return;var allBindings=allBindingsAccessor();try{var argsForHandler=ko.utils.makeArray(arguments);argsForHandler.unshift(viewModel);handlerReturnValue=handlerFunction.apply(viewModel,argsForHandler);}finally{if(handlerReturnValue!==true){if(event.preventDefault) -event.preventDefault();else -event.returnValue=false;}} -var bubble=allBindings[eventName+'Bubble']!==false;if(!bubble){event.cancelBubble=true;if(event.stopPropagation) -event.stopPropagation();}});}})();}}};ko.bindingHandlers['foreach']={makeTemplateValueAccessor:function(valueAccessor){return function(){var modelValue=valueAccessor(),unwrappedValue=ko.utils.peekObservable(modelValue);if((!unwrappedValue)||typeof unwrappedValue.length=="number") -return{'foreach':modelValue,'templateEngine':ko.nativeTemplateEngine.instance};ko.utils.unwrapObservable(modelValue);return{'foreach':unwrappedValue['data'],'as':unwrappedValue['as'],'includeDestroyed':unwrappedValue['includeDestroyed'],'afterAdd':unwrappedValue['afterAdd'],'beforeRemove':unwrappedValue['beforeRemove'],'afterRender':unwrappedValue['afterRender'],'beforeMove':unwrappedValue['beforeMove'],'afterMove':unwrappedValue['afterMove'],'templateEngine':ko.nativeTemplateEngine.instance};};},'init':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){return ko.bindingHandlers['template']['init'](element,ko.bindingHandlers['foreach'].makeTemplateValueAccessor(valueAccessor));},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){return ko.bindingHandlers['template']['update'](element,ko.bindingHandlers['foreach'].makeTemplateValueAccessor(valueAccessor),allBindingsAccessor,viewModel,bindingContext);}};ko.expressionRewriting.bindingRewriteValidators['foreach']=false;ko.virtualElements.allowedBindings['foreach']=true;var hasfocusUpdatingProperty='__ko_hasfocusUpdating';ko.bindingHandlers['hasfocus']={'init':function(element,valueAccessor,allBindingsAccessor){var handleElementFocusChange=function(isFocused){ -element[hasfocusUpdatingProperty]=true;var ownerDoc=element.ownerDocument;if("activeElement" in ownerDoc){isFocused=(ownerDoc.activeElement===element);} -var modelValue=valueAccessor();ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'hasfocus',isFocused,true);element[hasfocusUpdatingProperty]=false;};var handleElementFocusIn=handleElementFocusChange.bind(null,true);var handleElementFocusOut=handleElementFocusChange.bind(null,false);ko.utils.registerEventHandler(element,"focus",handleElementFocusIn);ko.utils.registerEventHandler(element,"focusin",handleElementFocusIn);ko.utils.registerEventHandler(element,"blur",handleElementFocusOut);ko.utils.registerEventHandler(element,"focusout",handleElementFocusOut);},'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(!element[hasfocusUpdatingProperty]){value?element.focus():element.blur();ko.dependencyDetection.ignore(ko.utils.triggerEvent,null,[element,value?"focusin":"focusout"]);}}};ko.bindingHandlers['html']={'init':function(){return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor){ko.utils.setHtml(element,valueAccessor());}};var withIfDomDataKey='__ko_withIfBindingData';function makeWithIfBinding(bindingKey,isWith,isNot,makeContextCallback){ko.bindingHandlers[bindingKey]={'init':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){ko.utils.domData.set(element,withIfDomDataKey,{});return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var withIfData=ko.utils.domData.get(element,withIfDomDataKey),dataValue=ko.utils.unwrapObservable(valueAccessor()),shouldDisplay=!isNot!==!dataValue,isFirstRender=!withIfData.savedNodes,needsRefresh=isFirstRender||isWith||(shouldDisplay!==withIfData.didDisplayOnLastUpdate);if(needsRefresh){if(isFirstRender){withIfData.savedNodes=ko.utils.cloneNodes(ko.virtualElements.childNodes(element),true);} -if(shouldDisplay){if(!isFirstRender){ko.virtualElements.setDomNodeChildren(element,ko.utils.cloneNodes(withIfData.savedNodes));} -ko.applyBindingsToDescendants(makeContextCallback?makeContextCallback(bindingContext,dataValue):bindingContext,element);}else{ko.virtualElements.emptyNode(element);} -withIfData.didDisplayOnLastUpdate=shouldDisplay;}}};ko.expressionRewriting.bindingRewriteValidators[bindingKey]=false;ko.virtualElements.allowedBindings[bindingKey]=true;} -makeWithIfBinding('if');makeWithIfBinding('ifnot',false, true);makeWithIfBinding('with',true,false,function(bindingContext,dataValue){return bindingContext['createChildContext'](dataValue);});function ensureDropdownSelectionIsConsistentWithModelValue(element,modelValue,preferModelValue){if(preferModelValue){if(modelValue!==ko.selectExtensions.readValue(element)) -ko.selectExtensions.writeValue(element,modelValue);} -if(modelValue!==ko.selectExtensions.readValue(element)) -ko.dependencyDetection.ignore(ko.utils.triggerEvent,null,[element,"change"]);};ko.bindingHandlers['options']={'update':function(element,valueAccessor,allBindingsAccessor){if(ko.utils.tagNameLower(element)!=="select") -throw new Error("options binding applies only to SELECT elements");var selectWasPreviouslyEmpty=element.length==0;var previousSelectedValues=ko.utils.arrayMap(ko.utils.arrayFilter(element.childNodes,function(node){return node.tagName&&(ko.utils.tagNameLower(node)==="option")&&node.selected;}),function(node){return ko.selectExtensions.readValue(node)||node.innerText||node.textContent;});var previousScrollTop=element.scrollTop;var value=ko.utils.unwrapObservable(valueAccessor());var selectedValue=element.value;while(element.length>0){ko.cleanNode(element.options[0]);element.remove(0);} -if(value){var allBindings=allBindingsAccessor(),includeDestroyed=allBindings['optionsIncludeDestroyed'];if(typeof value.length!="number") -value=[value];if(allBindings['optionsCaption']){var option=document.createElement("option");ko.utils.setHtml(option,allBindings['optionsCaption']);ko.selectExtensions.writeValue(option,undefined);element.appendChild(option);} -for(var i=0,j=value.length;i=0){ko.utils.setOptionNodeSelectionState(newOptions[i],true);countSelectionsRetained++;}} -element.scrollTop=previousScrollTop;if(selectWasPreviouslyEmpty&&('value' in allBindings)){ensureDropdownSelectionIsConsistentWithModelValue(element,ko.utils.peekObservable(allBindings['value']),true);} -ko.utils.ensureSelectElementIsRenderedCorrectly(element);}}};ko.bindingHandlers['options'].optionValueDomDataKey='__ko.optionValueDomData__';ko.bindingHandlers['selectedOptions']={'init':function(element,valueAccessor,allBindingsAccessor){ko.utils.registerEventHandler(element,"change",function(){var value=valueAccessor(),valueToWrite=[];ko.utils.arrayForEach(element.getElementsByTagName("option"),function(node){if(node.selected) -valueToWrite.push(ko.selectExtensions.readValue(node));});ko.expressionRewriting.writeValueToProperty(value,allBindingsAccessor,'value',valueToWrite);});}, -'update':function(element,valueAccessor){if(ko.utils.tagNameLower(element)!="select") -throw new Error("values binding applies only to SELECT elements");var newValue=ko.utils.unwrapObservable(valueAccessor());if(newValue&&typeof newValue.length=="number"){ko.utils.arrayForEach(element.getElementsByTagName("option"),function(node){var isSelected=ko.utils.arrayIndexOf(newValue,ko.selectExtensions.readValue(node))>=0;ko.utils.setOptionNodeSelectionState(node,isSelected);});}}};ko.bindingHandlers['style']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor()||{});for(var styleName in value){if(typeof styleName=="string"){var styleValue=ko.utils.unwrapObservable(value[styleName]);element.style[styleName]=styleValue||"";}}}};ko.bindingHandlers['submit']={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){if(typeof valueAccessor()!="function") -throw new Error("The value for a submit binding must be a function");ko.utils.registerEventHandler(element,"submit",function(event){var handlerReturnValue;var value=valueAccessor();try{handlerReturnValue=value.call(viewModel,element);} -finally{if(handlerReturnValue!==true){if(event.preventDefault) -event.preventDefault();else -event.returnValue=false;}}});}};ko.bindingHandlers['text']={'update':function(element,valueAccessor){ko.utils.setTextContent(element,valueAccessor());}};ko.virtualElements.allowedBindings['text']=true;ko.bindingHandlers['uniqueName']={'init':function(element,valueAccessor){if(valueAccessor()){var name="ko_unique_"+(++ko.bindingHandlers['uniqueName'].currentIndex);ko.utils.setElementName(element,name);}}};ko.bindingHandlers['uniqueName'].currentIndex=0;ko.bindingHandlers['value']={'init':function(element,valueAccessor,allBindingsAccessor){var eventsToCatch=["change"];var requestedEventsToCatch=allBindingsAccessor()["valueUpdate"];var propertyChangedFired=false;if(requestedEventsToCatch){if(typeof requestedEventsToCatch=="string") -requestedEventsToCatch=[requestedEventsToCatch];ko.utils.arrayPushAll(eventsToCatch,requestedEventsToCatch);eventsToCatch=ko.utils.arrayGetDistinctValues(eventsToCatch);} -var valueUpdateHandler=function(){propertyChangedFired=false;var modelValue=valueAccessor();var elementValue=ko.selectExtensions.readValue(element);ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'value',elementValue);} -var ieAutoCompleteHackNeeded=ko.utils.ieVersion&&element.tagName.toLowerCase()=="input"&&element.type=="text"&&element.autocomplete!="off"&&(!element.form||element.form.autocomplete!="off");if(ieAutoCompleteHackNeeded&&ko.utils.arrayIndexOf(eventsToCatch,"propertychange")==-1){ko.utils.registerEventHandler(element,"propertychange",function(){propertyChangedFired=true});ko.utils.registerEventHandler(element,"blur",function(){if(propertyChangedFired){valueUpdateHandler();}});} -ko.utils.arrayForEach(eventsToCatch,function(eventName){var handler=valueUpdateHandler;if(ko.utils.stringStartsWith(eventName,"after")){handler=function(){setTimeout(valueUpdateHandler,0)};eventName=eventName.substring("after".length);} -ko.utils.registerEventHandler(element,eventName,handler);});},'update':function(element,valueAccessor){var valueIsSelectOption=ko.utils.tagNameLower(element)==="select";var newValue=ko.utils.unwrapObservable(valueAccessor());var elementValue=ko.selectExtensions.readValue(element);var valueHasChanged=(newValue!=elementValue);if((newValue===0)&&(elementValue!==0)&&(elementValue!=="0")) -valueHasChanged=true;if(valueHasChanged){var applyValueAction=function(){ko.selectExtensions.writeValue(element,newValue);};applyValueAction();var alsoApplyAsynchronously=valueIsSelectOption;if(alsoApplyAsynchronously) -setTimeout(applyValueAction,0);} -if(valueIsSelectOption&&(element.length>0)) -ensureDropdownSelectionIsConsistentWithModelValue(element,newValue,false);}};ko.bindingHandlers['visible']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());var isCurrentlyVisible=!(element.style.display=="none");if(value&&!isCurrentlyVisible) -element.style.display="";else if((!value)&&isCurrentlyVisible) -element.style.display="none";}};makeEventHandlerShortcut('click');ko.templateEngine=function(){};ko.templateEngine.prototype['renderTemplateSource']=function(templateSource,bindingContext,options){throw new Error("Override renderTemplateSource");};ko.templateEngine.prototype['createJavaScriptEvaluatorBlock']=function(script){throw new Error("Override createJavaScriptEvaluatorBlock");};ko.templateEngine.prototype['makeTemplateSource']=function(template,templateDocument){if(typeof template=="string"){templateDocument=templateDocument||document;var elem=templateDocument.getElementById(template);if(!elem) -throw new Error("Cannot find template with ID "+template);return new ko.templateSources.domElement(elem);}else if((template.nodeType==1)||(template.nodeType==8)){return new ko.templateSources.anonymousTemplate(template);}else -throw new Error("Unknown template type: "+template);};ko.templateEngine.prototype['renderTemplate']=function(template,bindingContext,options,templateDocument){var templateSource=this['makeTemplateSource'](template,templateDocument);return this['renderTemplateSource'](templateSource,bindingContext,options);};ko.templateEngine.prototype['isTemplateRewritten']=function(template,templateDocument){if(this['allowTemplateRewriting']===false) -return true;return this['makeTemplateSource'](template,templateDocument)['data']("isRewritten");};ko.templateEngine.prototype['rewriteTemplate']=function(template,rewriterCallback,templateDocument){var templateSource=this['makeTemplateSource'](template,templateDocument);var rewritten=rewriterCallback(templateSource['text']());templateSource['text'](rewritten);templateSource['data']("isRewritten",true);};ko.exportSymbol('templateEngine',ko.templateEngine);ko.templateRewriting=(function(){var memoizeDataBindingAttributeSyntaxRegex=/(<[a-z]+\d*(\s+(?!data-bind=)[a-z0-9\-]+(=(\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind=(["'])([\s\S]*?)\5/gi;var memoizeVirtualContainerBindingSyntaxRegex=//g;function validateDataBindValuesForRewriting(keyValueArray){var allValidators=ko.expressionRewriting.bindingRewriteValidators;for(var i=0;i",templateEngine);});},applyMemoizedBindingsToNextSibling:function(bindings){return ko.memoization.memoize(function(domNode,bindingContext){if(domNode.nextSibling) -ko.applyBindingsToNode(domNode.nextSibling,bindings,bindingContext);});}}})();ko.exportSymbol('__tr_ambtns',ko.templateRewriting.applyMemoizedBindingsToNextSibling);(function(){// -ko.templateSources={};ko.templateSources.domElement=function(element){this.domElement=element;} -ko.templateSources.domElement.prototype['text']=function(){var tagNameLower=ko.utils.tagNameLower(this.domElement),elemContentsProperty=tagNameLower==="script"?"text":tagNameLower==="textarea"?"value":"innerHTML";if(arguments.length==0){return this.domElement[elemContentsProperty];}else{var valueToWrite=arguments[0];if(elemContentsProperty==="innerHTML") - ko.utils.setHtml(this.domElement,valueToWrite);else -this.domElement[elemContentsProperty]=valueToWrite;}};ko.templateSources.domElement.prototype['data']=function(key){if(arguments.length===1){return ko.utils.domData.get(this.domElement,"templateSourceData_"+key);}else{ko.utils.domData.set(this.domElement,"templateSourceData_"+key,arguments[1]);}};var anonymousTemplatesDomDataKey="__ko_anon_template__";ko.templateSources.anonymousTemplate=function(element){this.domElement=element;} -ko.templateSources.anonymousTemplate.prototype=new ko.templateSources.domElement();ko.templateSources.anonymousTemplate.prototype['text']=function(){if(arguments.length==0){var templateData=ko.utils.domData.get(this.domElement,anonymousTemplatesDomDataKey)||{};if(templateData.textData===undefined&&templateData.containerData) -templateData.textData=templateData.containerData.innerHTML;return templateData.textData;}else{var valueToWrite=arguments[0];ko.utils.domData.set(this.domElement,anonymousTemplatesDomDataKey,{textData:valueToWrite});}};ko.templateSources.domElement.prototype['nodes']=function(){if(arguments.length==0){var templateData=ko.utils.domData.get(this.domElement,anonymousTemplatesDomDataKey)||{};return templateData.containerData;}else{ var valueToWrite=arguments[0];ko.utils.domData.set(this.domElement,anonymousTemplatesDomDataKey,{containerData:valueToWrite});}};ko.exportSymbol('templateSources',ko.templateSources);ko.exportSymbol('templateSources.domElement',ko.templateSources.domElement);ko.exportSymbol('templateSources.anonymousTemplate',ko.templateSources.anonymousTemplate);})();(function(){var _templateEngine;ko.setTemplateEngine=function(templateEngine){if((templateEngine!=undefined)&&!(templateEngine instanceof ko.templateEngine)) -throw new Error("templateEngine must inherit from ko.templateEngine");_templateEngine=templateEngine;} -function invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,action){var node,nextInQueue=firstNode,firstOutOfRangeNode=ko.virtualElements.nextSibling(lastNode);while(nextInQueue&&((node=nextInQueue)!==firstOutOfRangeNode)){nextInQueue=ko.virtualElements.nextSibling(node);if(node.nodeType===1||node.nodeType===8) -action(node);}} -function activateBindingsOnContinuousNodeArray(continuousNodeArray,bindingContext){if(continuousNodeArray.length){var firstNode=continuousNodeArray[0],lastNode=continuousNodeArray[continuousNodeArray.length-1];invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,function(node){ko.applyBindings(bindingContext,node);});invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,function(node){ko.memoization.unmemoizeDomNodeAndDescendants(node,[bindingContext]);});}} -function getFirstNodeFromPossibleArray(nodeOrNodeArray){return nodeOrNodeArray.nodeType?nodeOrNodeArray:nodeOrNodeArray.length>0?nodeOrNodeArray[0]:null;} -function executeTemplate(targetNodeOrNodeArray,renderMode,template,bindingContext,options){options=options||{};var firstTargetNode=targetNodeOrNodeArray&&getFirstNodeFromPossibleArray(targetNodeOrNodeArray);var templateDocument=firstTargetNode&&firstTargetNode.ownerDocument;var templateEngineToUse=(options['templateEngine']||_templateEngine);ko.templateRewriting.ensureTemplateIsRewritten(template,templateEngineToUse,templateDocument);var renderedNodesArray=templateEngineToUse['renderTemplate'](template,bindingContext,options,templateDocument);if((typeof renderedNodesArray.length!="number")||(renderedNodesArray.length>0&&typeof renderedNodesArray[0].nodeType!="number")) -throw new Error("Template engine must return an array of DOM nodes");var haveAddedNodesToParent=false;switch(renderMode){case "replaceChildren":ko.virtualElements.setDomNodeChildren(targetNodeOrNodeArray,renderedNodesArray);haveAddedNodesToParent=true;break;case "replaceNode":ko.utils.replaceDomNodes(targetNodeOrNodeArray,renderedNodesArray);haveAddedNodesToParent=true;break;case "ignoreTargetNode":break;default:throw new Error("Unknown renderMode: "+renderMode);} -if(haveAddedNodesToParent){activateBindingsOnContinuousNodeArray(renderedNodesArray,bindingContext);if(options['afterRender']) -ko.dependencyDetection.ignore(options['afterRender'],null,[renderedNodesArray,bindingContext['$data']]);} -return renderedNodesArray;} -ko.renderTemplate=function(template,dataOrBindingContext,options,targetNodeOrNodeArray,renderMode){options=options||{};if((options['templateEngine']||_templateEngine)==undefined) -throw new Error("Set a template engine before calling renderTemplate");renderMode=renderMode||"replaceChildren";if(targetNodeOrNodeArray){var firstTargetNode=getFirstNodeFromPossibleArray(targetNodeOrNodeArray);var whenToDispose=function(){return(!firstTargetNode)||!ko.utils.domNodeIsAttachedToDocument(firstTargetNode);};var activelyDisposeWhenNodeIsRemoved=(firstTargetNode&&renderMode=="replaceNode")?firstTargetNode.parentNode:firstTargetNode;return ko.dependentObservable(function(){var bindingContext=(dataOrBindingContext&&(dataOrBindingContext instanceof ko.bindingContext))?dataOrBindingContext:new ko.bindingContext(ko.utils.unwrapObservable(dataOrBindingContext));var templateName=typeof(template)=='function'?template(bindingContext['$data'],bindingContext):template;var renderedNodesArray=executeTemplate(targetNodeOrNodeArray,renderMode,templateName,bindingContext,options);if(renderMode=="replaceNode"){targetNodeOrNodeArray=renderedNodesArray;firstTargetNode=getFirstNodeFromPossibleArray(targetNodeOrNodeArray);}},null,{disposeWhen:whenToDispose,disposeWhenNodeIsRemoved:activelyDisposeWhenNodeIsRemoved});}else{return ko.memoization.memoize(function(domNode){ko.renderTemplate(template,dataOrBindingContext,options,domNode,"replaceNode");});}};ko.renderTemplateForEach=function(template,arrayOrObservableArray,options,targetNode,parentBindingContext){var arrayItemContext;var executeTemplateForArrayItem=function(arrayValue,index){arrayItemContext=parentBindingContext['createChildContext'](ko.utils.unwrapObservable(arrayValue),options['as']);arrayItemContext['$index']=index;var templateName=typeof(template)=='function'?template(arrayValue,arrayItemContext):template;return executeTemplate(null,"ignoreTargetNode",templateName,arrayItemContext,options);} -var activateBindingsCallback=function(arrayValue,addedNodesArray,index){activateBindingsOnContinuousNodeArray(addedNodesArray,arrayItemContext);if(options['afterRender']) -options['afterRender'](addedNodesArray,arrayValue);};return ko.dependentObservable(function(){var unwrappedArray=ko.utils.unwrapObservable(arrayOrObservableArray)||[];if(typeof unwrappedArray.length=="undefined") -unwrappedArray=[unwrappedArray];var filteredArray=ko.utils.arrayFilter(unwrappedArray,function(item){return options['includeDestroyed']||item===undefined||item===null||!ko.utils.unwrapObservable(item['_destroy']);});ko.dependencyDetection.ignore(ko.utils.setDomNodeChildrenFromArrayMapping,null,[targetNode,filteredArray,executeTemplateForArrayItem,options,activateBindingsCallback]);},null,{disposeWhenNodeIsRemoved:targetNode});};var templateComputedDomDataKey='__ko__templateComputedDomDataKey__';function disposeOldComputedAndStoreNewOne(element,newComputed){var oldComputed=ko.utils.domData.get(element,templateComputedDomDataKey);if(oldComputed&&(typeof(oldComputed.dispose)=='function')) -oldComputed.dispose();ko.utils.domData.set(element,templateComputedDomDataKey,(newComputed&&newComputed.isActive())?newComputed:undefined);} -ko.bindingHandlers['template']={'init':function(element,valueAccessor){var bindingValue=ko.utils.unwrapObservable(valueAccessor());if((typeof bindingValue!="string")&&(!bindingValue['name'])&&(element.nodeType==1||element.nodeType==8)){var templateNodes=element.nodeType==1?element.childNodes:ko.virtualElements.childNodes(element),container=ko.utils.moveCleanedNodesToContainerElement(templateNodes);new ko.templateSources.anonymousTemplate(element)['nodes'](container);} -return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var templateName=ko.utils.unwrapObservable(valueAccessor()),options={},shouldDisplay=true,dataValue,templateComputed=null;if(typeof templateName!="string"){options=templateName;templateName=options['name'];if('if' in options) -shouldDisplay=ko.utils.unwrapObservable(options['if']);if(shouldDisplay&&'ifnot' in options) -shouldDisplay=!ko.utils.unwrapObservable(options['ifnot']);dataValue=ko.utils.unwrapObservable(options['data']);} -if('foreach' in options){var dataArray=(shouldDisplay&&options['foreach'])||[];templateComputed=ko.renderTemplateForEach(templateName||element,dataArray,options,element,bindingContext);}else if(!shouldDisplay){ko.virtualElements.emptyNode(element);}else{var innerBindingContext=('data' in options)?bindingContext['createChildContext'](dataValue,options['as']):bindingContext;templateComputed=ko.renderTemplate(templateName||element,innerBindingContext,options,element);} -disposeOldComputedAndStoreNewOne(element,templateComputed);}};ko.expressionRewriting.bindingRewriteValidators['template']=function(bindingValue){var parsedBindingValue=ko.expressionRewriting.parseObjectLiteral(bindingValue);if((parsedBindingValue.length==1)&&parsedBindingValue[0]['unknown']) -return null;if(ko.expressionRewriting.keyValueArrayContainsKey(parsedBindingValue,"name")) -return null;return "This template engine does not support anonymous templates nested within its templates";};ko.virtualElements.allowedBindings['template']=true;})();ko.exportSymbol('setTemplateEngine',ko.setTemplateEngine);ko.exportSymbol('renderTemplate',ko.renderTemplate);ko.utils.compareArrays=(function(){var statusNotInOld='added',statusNotInNew='deleted';function compareArrays(oldArray,newArray,dontLimitMoves){oldArray=oldArray||[];newArray=newArray||[];if(oldArray.length<=newArray.length) -return compareSmallArrayToBigArray(oldArray,newArray,statusNotInOld,statusNotInNew,dontLimitMoves);else -return compareSmallArrayToBigArray(newArray,oldArray,statusNotInNew,statusNotInOld,dontLimitMoves);} -function compareSmallArrayToBigArray(smlArray,bigArray,statusNotInSml,statusNotInBig,dontLimitMoves){var myMin=Math.min,myMax=Math.max,editDistanceMatrix=[],smlIndex,smlIndexMax=smlArray.length,bigIndex,bigIndexMax=bigArray.length,compareRange=(bigIndexMax-smlIndexMax)||1,maxDistance=smlIndexMax+bigIndexMax+1, thisRow,lastRow,bigIndexMaxForRow,bigIndexMinForRow;for(smlIndex=0;smlIndex<=smlIndexMax;smlIndex++){lastRow=thisRow;editDistanceMatrix.push(thisRow=[]);bigIndexMaxForRow=myMin(bigIndexMax,smlIndex+compareRange);bigIndexMinForRow=myMax(0,smlIndex-1);for(bigIndex=bigIndexMinForRow;bigIndex<=bigIndexMaxForRow;bigIndex++){if(!bigIndex) -thisRow[bigIndex]=smlIndex+1;else if(!smlIndex) -thisRow[bigIndex]=bigIndex+1;else if(smlArray[smlIndex-1]===bigArray[bigIndex-1]) -thisRow[bigIndex]=lastRow[bigIndex-1];else{var northDistance=lastRow[bigIndex]||maxDistance;var westDistance=thisRow[bigIndex-1]||maxDistance;thisRow[bigIndex]=myMin(northDistance,westDistance)+1;}}} -var editScript=[],meMinusOne,notInSml=[],notInBig=[];for(smlIndex=smlIndexMax,bigIndex=bigIndexMax;smlIndex||bigIndex;){meMinusOne=editDistanceMatrix[smlIndex][bigIndex]-1;if(bigIndex&&meMinusOne===editDistanceMatrix[smlIndex][bigIndex-1]){notInSml.push(editScript[editScript.length]={'status':statusNotInSml,'value':bigArray[--bigIndex],'index':bigIndex});}else if(smlIndex&&meMinusOne===editDistanceMatrix[smlIndex-1][bigIndex]){notInBig.push(editScript[editScript.length]={'status':statusNotInBig,'value':smlArray[--smlIndex], 'index':smlIndex});}else{editScript.push({'status':"retained",'value':bigArray[--bigIndex]});--smlIndex;}} -if(notInSml.length&¬InBig.length){var limitFailedCompares=smlIndexMax*10,failedCompares,a,d,notInSmlItem,notInBigItem;for(failedCompares=a=0;(dontLimitMoves||failedCompares1){var current=contiguousNodeArray[0],last=contiguousNodeArray[contiguousNodeArray.length-1],newContiguousSet=[current];while(current!==last){current=current.nextSibling;if(!current) -return;newContiguousSet.push(current);} -Array.prototype.splice.apply(contiguousNodeArray,[0,contiguousNodeArray.length].concat(newContiguousSet));} -return contiguousNodeArray;} -function mapNodeAndRefreshWhenChanged(containerNode,mapping,valueToMap,callbackAfterAddingNodes,index){var mappedNodes=[];var dependentObservable=ko.dependentObservable(function(){var newMappedNodes=mapping(valueToMap,index)||[];if(mappedNodes.length>0){ko.utils.replaceDomNodes(fixUpNodesToBeMovedOrRemoved(mappedNodes),newMappedNodes);if(callbackAfterAddingNodes) -ko.dependencyDetection.ignore(callbackAfterAddingNodes,null,[valueToMap,newMappedNodes,index]);} -mappedNodes.splice(0,mappedNodes.length);ko.utils.arrayPushAll(mappedNodes,newMappedNodes);},null,{disposeWhenNodeIsRemoved:containerNode,disposeWhen:function(){return(mappedNodes.length==0)||!ko.utils.domNodeIsAttachedToDocument(mappedNodes[0])}});return{mappedNodes:mappedNodes,dependentObservable:(dependentObservable.isActive()?dependentObservable:undefined)};} -var lastMappingResultDomDataKey="setDomNodeChildrenFromArrayMapping_lastMappingResult";ko.utils.setDomNodeChildrenFromArrayMapping=function(domNode,array,mapping,options,callbackAfterAddingNodes){array=array||[];options=options||{};var isFirstExecution=ko.utils.domData.get(domNode,lastMappingResultDomDataKey)===undefined;var lastMappingResult=ko.utils.domData.get(domNode,lastMappingResultDomDataKey)||[];var lastArray=ko.utils.arrayMap(lastMappingResult,function(x){return x.arrayEntry;});var editScript=ko.utils.compareArrays(lastArray,array);var newMappingResult=[];var lastMappingResultIndex=0;var newMappingResultIndex=0;var nodesToDelete=[];var itemsToProcess=[];var itemsForBeforeRemoveCallbacks=[];var itemsForMoveCallbacks=[];var itemsForAfterAddCallbacks=[];var mapData;function itemMovedOrRetained(editScriptIndex,oldPosition){mapData=lastMappingResult[oldPosition];if(newMappingResultIndex!==oldPosition) -itemsForMoveCallbacks[editScriptIndex]=mapData;mapData.indexObservable(newMappingResultIndex++);fixUpNodesToBeMovedOrRemoved(mapData.mappedNodes);newMappingResult.push(mapData);itemsToProcess.push(mapData);} -function callCallback(callback,items){if(callback){for(var i=0,n=items.length;i=0){return 2;}}catch(ex){} -return 1;})();function ensureHasReferencedJQueryTemplates(){if(jQueryTmplVersion<2) -throw new Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");} -function executeTemplate(compiledTemplate,data,jQueryTemplateOptions){return jQuery['tmpl'](compiledTemplate,data,jQueryTemplateOptions);} -this['renderTemplateSource']=function(templateSource,bindingContext,options){options=options||{}; ensureHasReferencedJQueryTemplates();var precompiled=templateSource['data']('precompiled');if(!precompiled){var templateText=templateSource['text']()||"";templateText="{{ko_with $item.koBindingContext}}"+templateText+"{{/ko_with}}";precompiled=jQuery['template'](null,templateText);templateSource['data']('precompiled',precompiled);} -var data=[bindingContext['$data']];var jQueryTemplateOptions=jQuery['extend']({'koBindingContext':bindingContext},options['templateOptions']);var resultNodes=executeTemplate(precompiled,data,jQueryTemplateOptions);resultNodes['appendTo'](document.createElement("div"));jQuery['fragments']={};return resultNodes;};this['createJavaScriptEvaluatorBlock']=function(script){return "{{ko_code ((function() { return "+script+" })()) }}";};this['addTemplate']=function(templateName,templateMarkup){document.write("");};if(jQueryTmplVersion>0){jQuery['tmpl']['tag']['ko_code']={open:"__.push($1 || '');"};jQuery['tmpl']['tag']['ko_with']={open:"with($1) {",close:"} "};}};ko.jqueryTmplTemplateEngine.prototype=new ko.templateEngine();// -var jqueryTmplTemplateEngineInstance=new ko.jqueryTmplTemplateEngine();if(jqueryTmplTemplateEngineInstance.jQueryTmplVersion>0) -ko.setTemplateEngine(jqueryTmplTemplateEngineInstance);ko.exportSymbol('jqueryTmplTemplateEngine',ko.jqueryTmplTemplateEngine);})();});})(window,document,navigator,window["jQuery"]);})(); \ No newline at end of file diff -r be339aa223bf -r 7df920c18c83 static/lib/knockout-2.2.0.debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/static/lib/knockout-2.2.0.debug.js Wed Mar 06 23:23:18 2013 -0800 @@ -0,0 +1,400 @@ +(function(){var DEBUG=true;(function(window,document,navigator,jQuery,undefined){!function(factory){if(typeof require==='function'&&typeof exports==='object'&&typeof module==='object'){var target=module['exports']||exports;factory(target);}else if(typeof define==='function'&&define['amd']){define(['exports'],factory);}else{factory(window['ko']={});}}(function(koExports){var ko=typeof koExports!=='undefined'?koExports:{};ko.exportSymbol=function(koPath,object){var tokens=koPath.split(".");var target=ko;for(var i=0;i',iElems[0]);return version>4?version:undefined;}());var isIe6=ieVersion===6,isIe7=ieVersion===7;function isClickOnCheckableElement(element,eventType){if((ko.utils.tagNameLower(element)!=="input")||!element.type)return false;if(eventType.toLowerCase()!="click")return false;var inputType=element.type; return(inputType=="checkbox")||(inputType=="radio");} +return{fieldsIncludedWithJsonPost:['authenticity_token',/^__RequestVerificationToken(_.*)?$/],arrayForEach:function(array,action){for(var i=0,j=array.length;i=0) +array.splice(index,1);},arrayGetDistinctValues:function(array){array=array||[];var result=[];for(var i=0,j=array.length;i0){var insertionPoint=nodesToReplaceArray[0];var parent=insertionPoint.parentNode;for(var i=0,j=newNodesArray.length;istring.length) +return false;return string.substring(0,startsWith.length)===startsWith;},domNodeIsContainedBy:function(node,containedByNode){if(containedByNode.compareDocumentPosition) +return(containedByNode.compareDocumentPosition(node)&16)==16;while(node!=null){if(node==containedByNode) +return true;node=node.parentNode;} +return false;},domNodeIsAttachedToDocument:function(node){return ko.utils.domNodeIsContainedBy(node,node.ownerDocument);},tagNameLower:function(element){ +return element&&element.tagName&&element.tagName.toLowerCase();},registerEventHandler:function(element,eventType,handler){var mustUseAttachEvent=ieVersion&&eventsThatMustBeRegisteredUsingAttachEvent[eventType];if(!mustUseAttachEvent&&typeof jQuery!="undefined"){if(isClickOnCheckableElement(element,eventType)){var originalHandler=handler;handler=function(event,eventData){var jQuerySuppliedCheckedState=this.checked;if(eventData) +this.checked=eventData.checkedStateBeforeEvent!==true;originalHandler.call(this,event);this.checked=jQuerySuppliedCheckedState;};} +jQuery(element)['bind'](eventType,handler);}else if(!mustUseAttachEvent&&typeof element.addEventListener=="function") +element.addEventListener(eventType,handler,false);else if(typeof element.attachEvent!="undefined") +element.attachEvent("on"+eventType,function(event){handler.call(element,event);});else +throw new Error("Browser doesn't support addEventListener or attachEvent");},triggerEvent:function(element,eventType){ if(!(element&&element.nodeType)) +throw new Error("element must be a DOM node when calling triggerEvent");if(typeof jQuery!="undefined"){var eventData=[];if(isClickOnCheckableElement(element,eventType)){eventData.push({checkedStateBeforeEvent:element.checked});} +jQuery(element)['trigger'](eventType,eventData);}else if(typeof document.createEvent=="function"){if(typeof element.dispatchEvent=="function"){var eventCategory=knownEventTypesByEventName[eventType]||"HTMLEvents";var event=document.createEvent(eventCategory);event.initEvent(eventType,true,true,window,0,0,0,0,0,false,false,false,false,0,element);element.dispatchEvent(event);} +else +throw new Error("The supplied element doesn't support dispatchEvent");}else if(typeof element.fireEvent!="undefined"){if(isClickOnCheckableElement(element,eventType)) +element.checked=element.checked!==true;element.fireEvent("on"+eventType);} +else +throw new Error("Browser doesn't support triggering events");},unwrapObservable:function(value){return ko.isObservable(value)?value():value;},peekObservable:function(value){return ko.isObservable(value)?value.peek():value;},toggleDomNodeCssClass:function(node,classNames,shouldHaveClass){if(classNames){var cssClassNameRegex=/[\w-]+/g,currentClassNames=node.className.match(cssClassNameRegex)||[];ko.utils.arrayForEach(classNames.match(cssClassNameRegex),function(className){var indexOfClass=ko.utils.arrayIndexOf(currentClassNames,className);if(indexOfClass>=0){if(!shouldHaveClass) +currentClassNames.splice(indexOfClass,1);}else{if(shouldHaveClass) +currentClassNames.push(className);}});node.className=currentClassNames.join(" ");}},setTextContent:function(element,textContent){var value=ko.utils.unwrapObservable(textContent);if((value===null)||(value===undefined)) +value="";if(element.nodeType===3){element.data=value;}else{var innerTextNode=ko.virtualElements.firstChild(element);if(!innerTextNode||innerTextNode.nodeType!=3||ko.virtualElements.nextSibling(innerTextNode)){ko.virtualElements.setDomNodeChildren(element,[document.createTextNode(value)]);}else{innerTextNode.data=value;} +ko.utils.forceRefresh(element);}},setElementName:function(element,name){element.name=name;// +if(ieVersion<=7){try{element.mergeAttributes(document.createElement(""),false);} +catch(e){}}},forceRefresh:function(node){if(ieVersion>=9){var elem=node.nodeType==1?node:node.parentNode;if(elem.style) +elem.style.zoom=elem.style.zoom;}},ensureSelectElementIsRenderedCorrectly:function(selectElement){if(ieVersion>=9){var originalWidth=selectElement.style.width;selectElement.style.width=0;selectElement.style.width=originalWidth;}},range:function(min,max){min=ko.utils.unwrapObservable(min);max=ko.utils.unwrapObservable(max);var result=[];for(var i=min;i<=max;i++) +result.push(i);return result;},makeArray:function(arrayLikeObject){var result=[];for(var i=0,j=arrayLikeObject.length;i=0;i--){if(isMatchingField(fields[i])) +matches.push(fields[i]);};return matches;},parseJson:function(jsonString){if(typeof jsonString=="string"){jsonString=ko.utils.stringTrim(jsonString);if(jsonString){if(window.JSON&&window.JSON.parse) +return window.JSON.parse(jsonString);return(new Function("return "+jsonString))();}} +return null;},stringifyJson:function(data,replacer,space){if((typeof JSON=="undefined")||(typeof JSON.stringify=="undefined")) +throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return JSON.stringify(ko.utils.unwrapObservable(data),replacer,space);},postJson:function(urlOrForm,data,options){options=options||{};var params=options['params']||{};var includeFields=options['includeFields']||this.fieldsIncludedWithJsonPost;var url=urlOrForm;if((typeof urlOrForm=='object')&&(ko.utils.tagNameLower(urlOrForm)==="form")){var originalForm=urlOrForm;url=originalForm.action;for(var i=includeFields.length-1;i>=0;i--){var fields=ko.utils.getFormFields(originalForm,includeFields[i]);for(var j=fields.length-1;j>=0;j--) +params[fields[j].name]=fields[j].value;}} +data=ko.utils.unwrapObservable(data);var form=document.createElement("form");form.style.display="none";form.action=url;form.method="post";for(var key in data){var input=document.createElement("input");input.name=key;input.value=ko.utils.stringifyJson(ko.utils.unwrapObservable(data[key]));form.appendChild(input);} +for(var key in params){var input=document.createElement("input");input.name=key;input.value=params[key];form.appendChild(input);} +document.body.appendChild(form);options['submitter']?options['submitter'](form):form.submit();setTimeout(function(){form.parentNode.removeChild(form);},0);}}})();ko.exportSymbol('utils',ko.utils);ko.exportSymbol('utils.arrayForEach',ko.utils.arrayForEach);ko.exportSymbol('utils.arrayFirst',ko.utils.arrayFirst);ko.exportSymbol('utils.arrayFilter',ko.utils.arrayFilter);ko.exportSymbol('utils.arrayGetDistinctValues',ko.utils.arrayGetDistinctValues);ko.exportSymbol('utils.arrayIndexOf',ko.utils.arrayIndexOf);ko.exportSymbol('utils.arrayMap',ko.utils.arrayMap);ko.exportSymbol('utils.arrayPushAll',ko.utils.arrayPushAll);ko.exportSymbol('utils.arrayRemoveItem',ko.utils.arrayRemoveItem);ko.exportSymbol('utils.extend',ko.utils.extend);ko.exportSymbol('utils.fieldsIncludedWithJsonPost',ko.utils.fieldsIncludedWithJsonPost);ko.exportSymbol('utils.getFormFields',ko.utils.getFormFields);ko.exportSymbol('utils.peekObservable',ko.utils.peekObservable);ko.exportSymbol('utils.postJson',ko.utils.postJson);ko.exportSymbol('utils.parseJson',ko.utils.parseJson);ko.exportSymbol('utils.registerEventHandler',ko.utils.registerEventHandler);ko.exportSymbol('utils.stringifyJson',ko.utils.stringifyJson);ko.exportSymbol('utils.range',ko.utils.range);ko.exportSymbol('utils.toggleDomNodeCssClass',ko.utils.toggleDomNodeCssClass);ko.exportSymbol('utils.triggerEvent',ko.utils.triggerEvent);ko.exportSymbol('utils.unwrapObservable',ko.utils.unwrapObservable);if(!Function.prototype['bind']){// +Function.prototype['bind']=function(object){var originalFunction=this,args=Array.prototype.slice.call(arguments),object=args.shift();return function(){return originalFunction.apply(object,args.concat(Array.prototype.slice.call(arguments)));};};} +ko.utils.domData=new(function(){var uniqueId=0;var dataStoreKeyExpandoPropertyName="__ko__"+(new Date).getTime();var dataStore={};return{get:function(node,key){var allDataForNode=ko.utils.domData.getAll(node,false);return allDataForNode===undefined?undefined:allDataForNode[key];},set:function(node,key,value){if(value===undefined){if(ko.utils.domData.getAll(node,false)===undefined) +return;} +var allDataForNode=ko.utils.domData.getAll(node,true);allDataForNode[key]=value;},getAll:function(node,createIfNotFound){var dataStoreKey=node[dataStoreKeyExpandoPropertyName];var hasExistingDataStore=dataStoreKey&&(dataStoreKey!=="null")&&dataStore[dataStoreKey];if(!hasExistingDataStore){if(!createIfNotFound) +return undefined;dataStoreKey=node[dataStoreKeyExpandoPropertyName]="ko"+uniqueId++;dataStore[dataStoreKey]={};} +return dataStore[dataStoreKey];},clear:function(node){var dataStoreKey=node[dataStoreKeyExpandoPropertyName];if(dataStoreKey){delete dataStore[dataStoreKey];node[dataStoreKeyExpandoPropertyName]=null;return true;} +return false;}}})();ko.exportSymbol('utils.domData',ko.utils.domData);ko.exportSymbol('utils.domData.clear',ko.utils.domData.clear);ko.utils.domNodeDisposal=new(function(){var domDataKey="__ko_domNodeDisposal__"+(new Date).getTime();var cleanableNodeTypes={1:true,8:true,9:true};var cleanableNodeTypesWithDescendants={1:true,9:true};function getDisposeCallbacksCollection(node,createIfNotFound){var allDisposeCallbacks=ko.utils.domData.get(node,domDataKey);if((allDisposeCallbacks===undefined)&&createIfNotFound){allDisposeCallbacks=[];ko.utils.domData.set(node,domDataKey,allDisposeCallbacks);} +return allDisposeCallbacks;} +function destroyCallbacksCollection(node){ko.utils.domData.set(node,domDataKey,undefined);} +function cleanSingleNode(node){var callbacks=getDisposeCallbacksCollection(node,false);if(callbacks){callbacks=callbacks.slice(0);for(var i=0;i/;function simpleHtmlParse(html){//-->abc" will get parsed as "
abc
" +var tags=ko.utils.stringTrim(html).toLowerCase(),div=document.createElement("div");var wrap=tags.match(/^<(thead|tbody|tfoot)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||[0,"",""];var markup="ignored
"+wrap[1]+html+wrap[2]+"
";if(typeof window['innerShiv']=="function"){div.appendChild(window['innerShiv'](markup));}else{div.innerHTML=markup;} +while(wrap[0]--) +div=div.lastChild;return ko.utils.makeArray(div.lastChild.childNodes);} +function jQueryHtmlParse(html){var elems=jQuery['clean']([html]);if(elems&&elems[0]){var elem=elems[0];while(elem.parentNode&&elem.parentNode.nodeType!==11) +elem=elem.parentNode;if(elem.parentNode) +elem.parentNode.removeChild(elem);} +return elems;} +ko.utils.parseHtmlFragment=function(html){return typeof jQuery!='undefined'?jQueryHtmlParse(html) +:simpleHtmlParse(html);};ko.utils.setHtml=function(node,html){ko.utils.emptyDomNode(node);html=ko.utils.unwrapObservable(html);if((html!==null)&&(html!==undefined)){if(typeof html!='string') +html=html.toString();if(typeof jQuery!='undefined'){jQuery(node)['html'](html);}else{var parsedNodes=ko.utils.parseHtmlFragment(html);for(var i=0;i";},unmemoize:function(memoId,callbackParams){var callback=memos[memoId];if(callback===undefined) +throw new Error("Couldn't find any memo with ID "+memoId+". Perhaps it's already been unmemoized.");try{callback.apply(null,callbackParams||[]);return true;} +finally{delete memos[memoId];}},unmemoizeDomNodeAndDescendants:function(domNode,extraCallbackParamsArray){var memos=[];findMemoNodes(domNode,memos);for(var i=0,j=memos.length;i0){var topFrame=_frames[_frames.length-1];if(!topFrame||ko.utils.arrayIndexOf(topFrame.distinctDependencies,subscribable)>=0) +return;topFrame.distinctDependencies.push(subscribable);topFrame.callback(subscribable);}},ignore:function(callback,callbackTarget,callbackArgs){try{_frames.push(null);return callback.apply(callbackTarget,callbackArgs||[]);}finally{_frames.pop();}}};})();var primitiveTypes={'undefined':true,'boolean':true,'number':true,'string':true};ko.observable=function(initialValue){var _latestValue=initialValue;function observable(){if(arguments.length>0){if((!observable['equalityComparer'])||!observable['equalityComparer'](_latestValue,arguments[0])){observable.valueWillMutate();_latestValue=arguments[0];if(DEBUG)observable._latestValue=_latestValue;observable.valueHasMutated();} +return this;} +else{ko.dependencyDetection.registerDependency(observable);return _latestValue;}} +if(DEBUG)observable._latestValue=_latestValue;ko.subscribable.call(observable);observable.peek=function(){return _latestValue};observable.valueHasMutated=function(){observable["notifySubscribers"](_latestValue);} +observable.valueWillMutate=function(){observable["notifySubscribers"](_latestValue,"beforeChange");} +ko.utils.extend(observable,ko.observable['fn']);ko.exportProperty(observable,'peek',observable.peek);ko.exportProperty(observable,"valueHasMutated",observable.valueHasMutated);ko.exportProperty(observable,"valueWillMutate",observable.valueWillMutate);return observable;} +ko.observable['fn']={"equalityComparer":function valuesArePrimitiveAndEqual(a,b){var oldValueIsPrimitive=(a===null)||(typeof(a)in primitiveTypes);return oldValueIsPrimitive?(a===b):false;}};var protoProperty=ko.observable.protoProperty="__ko_proto__";ko.observable['fn'][protoProperty]=ko.observable;ko.hasPrototype=function(instance,prototype){if((instance===null)||(instance===undefined)||(instance[protoProperty]===undefined))return false;if(instance[protoProperty]===prototype)return true;return ko.hasPrototype(instance[protoProperty],prototype);};ko.isObservable=function(instance){return ko.hasPrototype(instance,ko.observable);} +ko.isWriteableObservable=function(instance){if((typeof instance=="function")&&instance[protoProperty]===ko.observable) +return true;if((typeof instance=="function")&&(instance[protoProperty]===ko.dependentObservable)&&(instance.hasWriteFunction)) +return true;return false;} +ko.exportSymbol('observable',ko.observable);ko.exportSymbol('isObservable',ko.isObservable);ko.exportSymbol('isWriteableObservable',ko.isWriteableObservable);ko.observableArray=function(initialValues){if(arguments.length==0){initialValues=[];} +if((initialValues!==null)&&(initialValues!==undefined)&&!('length' in initialValues)) +throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");var result=ko.observable(initialValues);ko.utils.extend(result,ko.observableArray['fn']);return result;} +ko.observableArray['fn']={'remove':function(valueOrPredicate){var underlyingArray=this.peek();var removedValues=[];var predicate=typeof valueOrPredicate=="function"?valueOrPredicate:function(value){return value===valueOrPredicate;};for(var i=0;i=0;});},'destroy':function(valueOrPredicate){var underlyingArray=this.peek();var predicate=typeof valueOrPredicate=="function"?valueOrPredicate:function(value){return value===valueOrPredicate;};this.valueWillMutate();for(var i=underlyingArray.length-1;i>=0;i--){var value=underlyingArray[i];if(predicate(value)) +underlyingArray[i]["_destroy"]=true;} +this.valueHasMutated();},'destroyAll':function(arrayOfValues){if(arrayOfValues===undefined) +return this['destroy'](function(){return true});// +if(!arrayOfValues) +return[];return this['destroy'](function(value){return ko.utils.arrayIndexOf(arrayOfValues,value)>=0;});},'indexOf':function(item){var underlyingArray=this();return ko.utils.arrayIndexOf(underlyingArray,item);},'replace':function(oldItem,newItem){var index=this['indexOf'](oldItem);if(index>=0){this.valueWillMutate();this.peek()[index]=newItem;this.valueHasMutated();}}} +ko.utils.arrayForEach(["pop","push","reverse","shift","sort","splice","unshift"],function(methodName){ko.observableArray['fn'][methodName]=function(){var underlyingArray=this.peek();this.valueWillMutate();var methodCallResult=underlyingArray[methodName].apply(underlyingArray,arguments);this.valueHasMutated();return methodCallResult;};});ko.utils.arrayForEach(["slice"],function(methodName){ko.observableArray['fn'][methodName]=function(){var underlyingArray=this();return underlyingArray[methodName].apply(underlyingArray,arguments);};});ko.exportSymbol('observableArray',ko.observableArray);ko.dependentObservable=function(evaluatorFunctionOrOptions,evaluatorFunctionTarget,options){var _latestValue,_hasBeenEvaluated=false,_isBeingEvaluated=false, readFunction=evaluatorFunctionOrOptions;if(readFunction&&typeof readFunction=="object"){options=readFunction;readFunction=options["read"];}else{options=options||{};if(!readFunction) +readFunction=options["read"];} +if(typeof readFunction!="function") +throw new Error("Pass a function that returns the value of the ko.computed");function addSubscriptionToDependency(subscribable){_subscriptionsToDependencies.push(subscribable.subscribe(evaluatePossiblyAsync));} +function disposeAllSubscriptionsToDependencies(){ko.utils.arrayForEach(_subscriptionsToDependencies,function(subscription){subscription.dispose();});_subscriptionsToDependencies=[];} +function evaluatePossiblyAsync(){var throttleEvaluationTimeout=dependentObservable['throttleEvaluation'];if(throttleEvaluationTimeout&&throttleEvaluationTimeout>=0){clearTimeout(evaluationTimeoutInstance);evaluationTimeoutInstance=setTimeout(evaluateImmediate,throttleEvaluationTimeout);}else +evaluateImmediate();} +function evaluateImmediate(){if(_isBeingEvaluated){return;}// +if(_hasBeenEvaluated&&disposeWhen()){dispose();return;} +_isBeingEvaluated=true;try{var disposalCandidates=ko.utils.arrayMap(_subscriptionsToDependencies,function(item){return item.target;});ko.dependencyDetection.begin(function(subscribable){var inOld;if((inOld=ko.utils.arrayIndexOf(disposalCandidates,subscribable))>=0) +disposalCandidates[inOld]=undefined;else +addSubscriptionToDependency(subscribable);});var newValue=readFunction.call(evaluatorFunctionTarget);for(var i=disposalCandidates.length-1;i>=0;i--){if(disposalCandidates[i]) +_subscriptionsToDependencies.splice(i,1)[0].dispose();} +_hasBeenEvaluated=true;dependentObservable["notifySubscribers"](_latestValue,"beforeChange");_latestValue=newValue;if(DEBUG)dependentObservable._latestValue=_latestValue;}finally{ko.dependencyDetection.end();} +dependentObservable["notifySubscribers"](_latestValue);_isBeingEvaluated=false;if(!_subscriptionsToDependencies.length) +dispose();} +function dependentObservable(){if(arguments.length>0){if(typeof writeFunction==="function"){writeFunction.apply(evaluatorFunctionTarget,arguments);}else{throw new Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");} +return this;}else{if(!_hasBeenEvaluated) +evaluateImmediate();ko.dependencyDetection.registerDependency(dependentObservable);return _latestValue;}} +function peek(){if(!_hasBeenEvaluated) +evaluateImmediate();return _latestValue;} +function isActive(){return!_hasBeenEvaluated||_subscriptionsToDependencies.length>0;} +var writeFunction=options["write"],disposeWhenNodeIsRemoved=options["disposeWhenNodeIsRemoved"]||options.disposeWhenNodeIsRemoved||null,disposeWhen=options["disposeWhen"]||options.disposeWhen||function(){return false;},dispose=disposeAllSubscriptionsToDependencies,_subscriptionsToDependencies=[],evaluationTimeoutInstance=null;if(!evaluatorFunctionTarget) +evaluatorFunctionTarget=options["owner"];dependentObservable.peek=peek;dependentObservable.getDependenciesCount=function(){return _subscriptionsToDependencies.length;};dependentObservable.hasWriteFunction=typeof options["write"]==="function";dependentObservable.dispose=function(){dispose();};dependentObservable.isActive=isActive;ko.subscribable.call(dependentObservable);ko.utils.extend(dependentObservable,ko.dependentObservable['fn']);ko.exportProperty(dependentObservable,'peek',dependentObservable.peek);ko.exportProperty(dependentObservable,'dispose',dependentObservable.dispose);ko.exportProperty(dependentObservable,'isActive',dependentObservable.isActive);ko.exportProperty(dependentObservable,'getDependenciesCount',dependentObservable.getDependenciesCount);if(options['deferEvaluation']!==true) +evaluateImmediate();if(disposeWhenNodeIsRemoved&&isActive()){dispose=function(){ko.utils.domNodeDisposal.removeDisposeCallback(disposeWhenNodeIsRemoved,arguments.callee);disposeAllSubscriptionsToDependencies();};ko.utils.domNodeDisposal.addDisposeCallback(disposeWhenNodeIsRemoved,dispose);var existingDisposeWhenFunction=disposeWhen;disposeWhen=function(){return!ko.utils.domNodeIsAttachedToDocument(disposeWhenNodeIsRemoved)||existingDisposeWhenFunction();}} +return dependentObservable;};ko.isComputed=function(instance){return ko.hasPrototype(instance,ko.dependentObservable);};var protoProp=ko.observable.protoProperty;ko.dependentObservable[protoProp]=ko.observable;ko.dependentObservable['fn']={};ko.dependentObservable['fn'][protoProp]=ko.dependentObservable;ko.exportSymbol('dependentObservable',ko.dependentObservable);ko.exportSymbol('computed',ko.dependentObservable);ko.exportSymbol('isComputed',ko.isComputed);(function(){var maxNestedObservableDepth=10;ko.toJS=function(rootObject){if(arguments.length==0) +throw new Error("When calling ko.toJS, pass the object you want to convert.");return mapJsObjectGraph(rootObject,function(valueToMap){for(var i=0;ko.isObservable(valueToMap)&&(i=0) +values[existingIndex]=value;else{keys.push(key);values.push(value);}};this.get=function(key){var existingIndex=ko.utils.arrayIndexOf(keys,key);return(existingIndex>=0)?values[existingIndex]:undefined;};};})();ko.exportSymbol('toJS',ko.toJS);ko.exportSymbol('toJSON',ko.toJSON);(function(){var hasDomDataExpandoProperty='__ko__hasDomDataOptionValue__';ko.selectExtensions={readValue:function(element){switch(ko.utils.tagNameLower(element)){case 'option':if(element[hasDomDataExpandoProperty]===true) +return ko.utils.domData.get(element,ko.bindingHandlers.options.optionValueDomDataKey);return ko.utils.ieVersion<=7?(element.getAttributeNode('value').specified?element.value:element.text):element.value;case 'select':return element.selectedIndex>=0?ko.selectExtensions.readValue(element.options[element.selectedIndex]):undefined;default:return element.value;}},writeValue:function(element,value){switch(ko.utils.tagNameLower(element)){case 'option':switch(typeof value){case "string":ko.utils.domData.set(element,ko.bindingHandlers.options.optionValueDomDataKey,undefined);if (hasDomDataExpandoProperty in element){delete element[hasDomDataExpandoProperty];} +element.value=value;break;default:ko.utils.domData.set(element,ko.bindingHandlers.options.optionValueDomDataKey,value);element[hasDomDataExpandoProperty]=true;element.value=typeof value==="number"?value:"";break;} +break;case 'select':for(var i=element.options.length-1;i>=0;i--){if(ko.selectExtensions.readValue(element.options[i])==value){element.selectedIndex=i;break;}} +break;default:if((value===null)||(value===undefined)) +value="";element.value=value;break;}}};})();ko.exportSymbol('selectExtensions',ko.selectExtensions);ko.exportSymbol('selectExtensions.readValue',ko.selectExtensions.readValue);ko.exportSymbol('selectExtensions.writeValue',ko.selectExtensions.writeValue);ko.expressionRewriting=(function(){var restoreCapturedTokensRegex=/\@ko_token_(\d+)\@/g;var javaScriptReservedWords=["true","false"];// +var javaScriptAssignmentTarget=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i;function restoreTokens(string,tokens){var prevValue=null;while(string!=prevValue){prevValue=string;string=string.replace(restoreCapturedTokensRegex,function(match,tokenIndex){return tokens[tokenIndex];});} +return string;} +function getWriteableValue(expression){if(ko.utils.arrayIndexOf(javaScriptReservedWords,ko.utils.stringTrim(expression).toLowerCase())>=0) +return false;var match=expression.match(javaScriptAssignmentTarget);return match===null?false:match[1]?('Object('+match[1]+')'+match[2]):expression;} +function ensureQuoted(key){var trimmedKey=ko.utils.stringTrim(key);switch(trimmedKey.length&&trimmedKey.charAt(0)){case "'":case '"':return key;default:return "'"+trimmedKey+"'";}} +return{bindingRewriteValidators:[],parseObjectLiteral:function(objectLiteralString){var str=ko.utils.stringTrim(objectLiteralString);if(str.length<3) +return[];if(str.charAt(0)==="{") +str=str.substring(1,str.length-1);var tokens=[];var tokenStart=null,tokenEndChar;for(var position=0;position< str.length;position++){var c=str.charAt(position);if(tokenStart===null){switch(c){case '"':case "'":case "/":tokenStart=position;tokenEndChar=c;break;}}else if((c==tokenEndChar)&&(str.charAt(position-1)!=="\\")){var token=str.substring(tokenStart,position+1);tokens.push(token);var replacement="@ko_token_"+(tokens.length-1)+"@";str=str.substring(0,tokenStart)+replacement+str.substring(position+1);position-=(token.length-replacement.length);tokenStart=null;}} +tokenStart=null;tokenEndChar=null;var tokenDepth=0,tokenStartChar=null;for(var position=0;position0)&&(colonPos0) +resultStrings.push(",");if(keyValueEntry['key']){var quotedKey=ensureQuoted(keyValueEntry['key']),val=keyValueEntry['value'];resultStrings.push(quotedKey);resultStrings.push(":");resultStrings.push(val);if(val=getWriteableValue(ko.utils.stringTrim(val))){if(propertyAccessorResultStrings.length>0) +propertyAccessorResultStrings.push(", ");propertyAccessorResultStrings.push(quotedKey+" : function(__ko_value) { "+val+" = __ko_value; }");}}else if(keyValueEntry['unknown']){resultStrings.push(keyValueEntry['unknown']);}} +var combinedResult=resultStrings.join("");if(propertyAccessorResultStrings.length>0){var allPropertyAccessors=propertyAccessorResultStrings.join("");combinedResult=combinedResult+", '_ko_property_writers' : { "+allPropertyAccessors+" } ";} +return combinedResult;},keyValueArrayContainsKey:function(keyValueArray,key){for(var i=0;iblah) +var commentNodesHaveTextProperty=document.createComment("test").text==="";var startCommentRegex=commentNodesHaveTextProperty?/^$/:/^\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*$/;var endCommentRegex=commentNodesHaveTextProperty?/^$/:/^\s*\/ko\s*$/;var htmlTagsWithOptionallyClosingChildren={'ul':true,'ol':true};function isStartComment(node){return(node.nodeType==8)&&(commentNodesHaveTextProperty?node.text:node.nodeValue).match(startCommentRegex);} +function isEndComment(node){return(node.nodeType==8)&&(commentNodesHaveTextProperty?node.text:node.nodeValue).match(endCommentRegex);} +function getVirtualChildren(startComment,allowUnbalanced){var currentNode=startComment;var depth=1;var children=[];while(currentNode=currentNode.nextSibling){if(isEndComment(currentNode)){depth--;if(depth===0) +return children;} +children.push(currentNode);if(isStartComment(currentNode)) +depth++;} +if(!allowUnbalanced) +throw new Error("Cannot find closing comment tag to match: "+startComment.nodeValue);return null;} +function getMatchingEndComment(startComment,allowUnbalanced){var allVirtualChildren=getVirtualChildren(startComment,allowUnbalanced);if(allVirtualChildren){if(allVirtualChildren.length>0) +return allVirtualChildren[allVirtualChildren.length-1].nextSibling;return startComment.nextSibling;}else +return null;} +function getUnbalancedChildTags(node){//-->Another, returns: Another +//-->, returns: +var childNode=node.firstChild,captureRemaining=null;if(childNode){do{if(captureRemaining) +captureRemaining.push(childNode);else if(isStartComment(childNode)){var matchingEndComment=getMatchingEndComment(childNode,true);if(matchingEndComment) +childNode=matchingEndComment;else +captureRemaining=[childNode];}else if(isEndComment(childNode)){captureRemaining=[childNode];}}while(childNode=childNode.nextSibling);} +return captureRemaining;} +ko.virtualElements={allowedBindings:{},childNodes:function(node){return isStartComment(node)?getVirtualChildren(node):node.childNodes;},emptyNode:function(node){if(!isStartComment(node)) +ko.utils.emptyDomNode(node);else{var virtualChildren=ko.virtualElements.childNodes(node);for(var i=0,j=virtualChildren.length;i=0)) +modelValue.splice(existingEntryIndex,1);}else{ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'checked',valueToWrite,true);}};ko.utils.registerEventHandler(element,"click",updateHandler);if((element.type=="radio")&&!element.name) +ko.bindingHandlers['uniqueName']['init'](element,function(){return true});},'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(element.type=="checkbox"){if(value instanceof Array){element.checked=ko.utils.arrayIndexOf(value,element.value)>=0;}else{ element.checked=value;}}else if(element.type=="radio"){element.checked=(element.value==value);}}};var classesWrittenByBindingKey='__ko__cssValue';ko.bindingHandlers['css']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(typeof value=="object"){for(var className in value){var shouldHaveClass=ko.utils.unwrapObservable(value[className]);ko.utils.toggleDomNodeCssClass(element,className,shouldHaveClass);}}else{value=String(value||'');ko.utils.toggleDomNodeCssClass(element,element[classesWrittenByBindingKey],false);element[classesWrittenByBindingKey]=value;ko.utils.toggleDomNodeCssClass(element,value,true);}}};ko.bindingHandlers['enable']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(value&&element.disabled) +element.removeAttribute("disabled");else if((!value)&&(!element.disabled)) +element.disabled=true;}};ko.bindingHandlers['disable']={'update':function(element,valueAccessor){ko.bindingHandlers['enable']['update'](element,function(){return!ko.utils.unwrapObservable(valueAccessor())});}};function makeEventHandlerShortcut(eventName){ko.bindingHandlers[eventName]={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){var newValueAccessor=function(){var result={};result[eventName]=valueAccessor();return result;};return ko.bindingHandlers['event']['init'].call(this,element,newValueAccessor,allBindingsAccessor,viewModel);}}} +ko.bindingHandlers['event']={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){var eventsToHandle=valueAccessor()||{};for(var eventNameOutsideClosure in eventsToHandle){(function(){var eventName=eventNameOutsideClosure;if(typeof eventName=="string"){ko.utils.registerEventHandler(element,eventName,function(event){var handlerReturnValue;var handlerFunction=valueAccessor()[eventName];if(!handlerFunction) +return;var allBindings=allBindingsAccessor();try{var argsForHandler=ko.utils.makeArray(arguments);argsForHandler.unshift(viewModel);handlerReturnValue=handlerFunction.apply(viewModel,argsForHandler);}finally{if(handlerReturnValue!==true){if(event.preventDefault) +event.preventDefault();else +event.returnValue=false;}} +var bubble=allBindings[eventName+'Bubble']!==false;if(!bubble){event.cancelBubble=true;if(event.stopPropagation) +event.stopPropagation();}});}})();}}};ko.bindingHandlers['foreach']={makeTemplateValueAccessor:function(valueAccessor){return function(){var modelValue=valueAccessor(),unwrappedValue=ko.utils.peekObservable(modelValue);if((!unwrappedValue)||typeof unwrappedValue.length=="number") +return{'foreach':modelValue,'templateEngine':ko.nativeTemplateEngine.instance};ko.utils.unwrapObservable(modelValue);return{'foreach':unwrappedValue['data'],'as':unwrappedValue['as'],'includeDestroyed':unwrappedValue['includeDestroyed'],'afterAdd':unwrappedValue['afterAdd'],'beforeRemove':unwrappedValue['beforeRemove'],'afterRender':unwrappedValue['afterRender'],'beforeMove':unwrappedValue['beforeMove'],'afterMove':unwrappedValue['afterMove'],'templateEngine':ko.nativeTemplateEngine.instance};};},'init':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){return ko.bindingHandlers['template']['init'](element,ko.bindingHandlers['foreach'].makeTemplateValueAccessor(valueAccessor));},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){return ko.bindingHandlers['template']['update'](element,ko.bindingHandlers['foreach'].makeTemplateValueAccessor(valueAccessor),allBindingsAccessor,viewModel,bindingContext);}};ko.expressionRewriting.bindingRewriteValidators['foreach']=false;ko.virtualElements.allowedBindings['foreach']=true;var hasfocusUpdatingProperty='__ko_hasfocusUpdating';ko.bindingHandlers['hasfocus']={'init':function(element,valueAccessor,allBindingsAccessor){var handleElementFocusChange=function(isFocused){ +element[hasfocusUpdatingProperty]=true;var ownerDoc=element.ownerDocument;if("activeElement" in ownerDoc){isFocused=(ownerDoc.activeElement===element);} +var modelValue=valueAccessor();ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'hasfocus',isFocused,true);element[hasfocusUpdatingProperty]=false;};var handleElementFocusIn=handleElementFocusChange.bind(null,true);var handleElementFocusOut=handleElementFocusChange.bind(null,false);ko.utils.registerEventHandler(element,"focus",handleElementFocusIn);ko.utils.registerEventHandler(element,"focusin",handleElementFocusIn);ko.utils.registerEventHandler(element,"blur",handleElementFocusOut);ko.utils.registerEventHandler(element,"focusout",handleElementFocusOut);},'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());if(!element[hasfocusUpdatingProperty]){value?element.focus():element.blur();ko.dependencyDetection.ignore(ko.utils.triggerEvent,null,[element,value?"focusin":"focusout"]);}}};ko.bindingHandlers['html']={'init':function(){return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor){ko.utils.setHtml(element,valueAccessor());}};var withIfDomDataKey='__ko_withIfBindingData';function makeWithIfBinding(bindingKey,isWith,isNot,makeContextCallback){ko.bindingHandlers[bindingKey]={'init':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){ko.utils.domData.set(element,withIfDomDataKey,{});return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var withIfData=ko.utils.domData.get(element,withIfDomDataKey),dataValue=ko.utils.unwrapObservable(valueAccessor()),shouldDisplay=!isNot!==!dataValue,isFirstRender=!withIfData.savedNodes,needsRefresh=isFirstRender||isWith||(shouldDisplay!==withIfData.didDisplayOnLastUpdate);if(needsRefresh){if(isFirstRender){withIfData.savedNodes=ko.utils.cloneNodes(ko.virtualElements.childNodes(element),true);} +if(shouldDisplay){if(!isFirstRender){ko.virtualElements.setDomNodeChildren(element,ko.utils.cloneNodes(withIfData.savedNodes));} +ko.applyBindingsToDescendants(makeContextCallback?makeContextCallback(bindingContext,dataValue):bindingContext,element);}else{ko.virtualElements.emptyNode(element);} +withIfData.didDisplayOnLastUpdate=shouldDisplay;}}};ko.expressionRewriting.bindingRewriteValidators[bindingKey]=false;ko.virtualElements.allowedBindings[bindingKey]=true;} +makeWithIfBinding('if');makeWithIfBinding('ifnot',false, true);makeWithIfBinding('with',true,false,function(bindingContext,dataValue){return bindingContext['createChildContext'](dataValue);});function ensureDropdownSelectionIsConsistentWithModelValue(element,modelValue,preferModelValue){if(preferModelValue){if(modelValue!==ko.selectExtensions.readValue(element)) +ko.selectExtensions.writeValue(element,modelValue);} +if(modelValue!==ko.selectExtensions.readValue(element)) +ko.dependencyDetection.ignore(ko.utils.triggerEvent,null,[element,"change"]);};ko.bindingHandlers['options']={'update':function(element,valueAccessor,allBindingsAccessor){if(ko.utils.tagNameLower(element)!=="select") +throw new Error("options binding applies only to SELECT elements");var selectWasPreviouslyEmpty=element.length==0;var previousSelectedValues=ko.utils.arrayMap(ko.utils.arrayFilter(element.childNodes,function(node){return node.tagName&&(ko.utils.tagNameLower(node)==="option")&&node.selected;}),function(node){return ko.selectExtensions.readValue(node)||node.innerText||node.textContent;});var previousScrollTop=element.scrollTop;var value=ko.utils.unwrapObservable(valueAccessor());var selectedValue=element.value;while(element.length>0){ko.cleanNode(element.options[0]);element.remove(0);} +if(value){var allBindings=allBindingsAccessor(),includeDestroyed=allBindings['optionsIncludeDestroyed'];if(typeof value.length!="number") +value=[value];if(allBindings['optionsCaption']){var option=document.createElement("option");ko.utils.setHtml(option,allBindings['optionsCaption']);ko.selectExtensions.writeValue(option,undefined);element.appendChild(option);} +for(var i=0,j=value.length;i=0){ko.utils.setOptionNodeSelectionState(newOptions[i],true);countSelectionsRetained++;}} +element.scrollTop=previousScrollTop;if(selectWasPreviouslyEmpty&&('value' in allBindings)){ensureDropdownSelectionIsConsistentWithModelValue(element,ko.utils.peekObservable(allBindings['value']),true);} +ko.utils.ensureSelectElementIsRenderedCorrectly(element);}}};ko.bindingHandlers['options'].optionValueDomDataKey='__ko.optionValueDomData__';ko.bindingHandlers['selectedOptions']={'init':function(element,valueAccessor,allBindingsAccessor){ko.utils.registerEventHandler(element,"change",function(){var value=valueAccessor(),valueToWrite=[];ko.utils.arrayForEach(element.getElementsByTagName("option"),function(node){if(node.selected) +valueToWrite.push(ko.selectExtensions.readValue(node));});ko.expressionRewriting.writeValueToProperty(value,allBindingsAccessor,'value',valueToWrite);});}, +'update':function(element,valueAccessor){if(ko.utils.tagNameLower(element)!="select") +throw new Error("values binding applies only to SELECT elements");var newValue=ko.utils.unwrapObservable(valueAccessor());if(newValue&&typeof newValue.length=="number"){ko.utils.arrayForEach(element.getElementsByTagName("option"),function(node){var isSelected=ko.utils.arrayIndexOf(newValue,ko.selectExtensions.readValue(node))>=0;ko.utils.setOptionNodeSelectionState(node,isSelected);});}}};ko.bindingHandlers['style']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor()||{});for(var styleName in value){if(typeof styleName=="string"){var styleValue=ko.utils.unwrapObservable(value[styleName]);element.style[styleName]=styleValue||"";}}}};ko.bindingHandlers['submit']={'init':function(element,valueAccessor,allBindingsAccessor,viewModel){if(typeof valueAccessor()!="function") +throw new Error("The value for a submit binding must be a function");ko.utils.registerEventHandler(element,"submit",function(event){var handlerReturnValue;var value=valueAccessor();try{handlerReturnValue=value.call(viewModel,element);} +finally{if(handlerReturnValue!==true){if(event.preventDefault) +event.preventDefault();else +event.returnValue=false;}}});}};ko.bindingHandlers['text']={'update':function(element,valueAccessor){ko.utils.setTextContent(element,valueAccessor());}};ko.virtualElements.allowedBindings['text']=true;ko.bindingHandlers['uniqueName']={'init':function(element,valueAccessor){if(valueAccessor()){var name="ko_unique_"+(++ko.bindingHandlers['uniqueName'].currentIndex);ko.utils.setElementName(element,name);}}};ko.bindingHandlers['uniqueName'].currentIndex=0;ko.bindingHandlers['value']={'init':function(element,valueAccessor,allBindingsAccessor){var eventsToCatch=["change"];var requestedEventsToCatch=allBindingsAccessor()["valueUpdate"];var propertyChangedFired=false;if(requestedEventsToCatch){if(typeof requestedEventsToCatch=="string") +requestedEventsToCatch=[requestedEventsToCatch];ko.utils.arrayPushAll(eventsToCatch,requestedEventsToCatch);eventsToCatch=ko.utils.arrayGetDistinctValues(eventsToCatch);} +var valueUpdateHandler=function(){propertyChangedFired=false;var modelValue=valueAccessor();var elementValue=ko.selectExtensions.readValue(element);ko.expressionRewriting.writeValueToProperty(modelValue,allBindingsAccessor,'value',elementValue);} +var ieAutoCompleteHackNeeded=ko.utils.ieVersion&&element.tagName.toLowerCase()=="input"&&element.type=="text"&&element.autocomplete!="off"&&(!element.form||element.form.autocomplete!="off");if(ieAutoCompleteHackNeeded&&ko.utils.arrayIndexOf(eventsToCatch,"propertychange")==-1){ko.utils.registerEventHandler(element,"propertychange",function(){propertyChangedFired=true});ko.utils.registerEventHandler(element,"blur",function(){if(propertyChangedFired){valueUpdateHandler();}});} +ko.utils.arrayForEach(eventsToCatch,function(eventName){var handler=valueUpdateHandler;if(ko.utils.stringStartsWith(eventName,"after")){handler=function(){setTimeout(valueUpdateHandler,0)};eventName=eventName.substring("after".length);} +ko.utils.registerEventHandler(element,eventName,handler);});},'update':function(element,valueAccessor){var valueIsSelectOption=ko.utils.tagNameLower(element)==="select";var newValue=ko.utils.unwrapObservable(valueAccessor());var elementValue=ko.selectExtensions.readValue(element);var valueHasChanged=(newValue!=elementValue);if((newValue===0)&&(elementValue!==0)&&(elementValue!=="0")) +valueHasChanged=true;if(valueHasChanged){var applyValueAction=function(){ko.selectExtensions.writeValue(element,newValue);};applyValueAction();var alsoApplyAsynchronously=valueIsSelectOption;if(alsoApplyAsynchronously) +setTimeout(applyValueAction,0);} +if(valueIsSelectOption&&(element.length>0)) +ensureDropdownSelectionIsConsistentWithModelValue(element,newValue,false);}};ko.bindingHandlers['visible']={'update':function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());var isCurrentlyVisible=!(element.style.display=="none");if(value&&!isCurrentlyVisible) +element.style.display="";else if((!value)&&isCurrentlyVisible) +element.style.display="none";}};makeEventHandlerShortcut('click');ko.templateEngine=function(){};ko.templateEngine.prototype['renderTemplateSource']=function(templateSource,bindingContext,options){throw new Error("Override renderTemplateSource");};ko.templateEngine.prototype['createJavaScriptEvaluatorBlock']=function(script){throw new Error("Override createJavaScriptEvaluatorBlock");};ko.templateEngine.prototype['makeTemplateSource']=function(template,templateDocument){if(typeof template=="string"){templateDocument=templateDocument||document;var elem=templateDocument.getElementById(template);if(!elem) +throw new Error("Cannot find template with ID "+template);return new ko.templateSources.domElement(elem);}else if((template.nodeType==1)||(template.nodeType==8)){return new ko.templateSources.anonymousTemplate(template);}else +throw new Error("Unknown template type: "+template);};ko.templateEngine.prototype['renderTemplate']=function(template,bindingContext,options,templateDocument){var templateSource=this['makeTemplateSource'](template,templateDocument);return this['renderTemplateSource'](templateSource,bindingContext,options);};ko.templateEngine.prototype['isTemplateRewritten']=function(template,templateDocument){if(this['allowTemplateRewriting']===false) +return true;return this['makeTemplateSource'](template,templateDocument)['data']("isRewritten");};ko.templateEngine.prototype['rewriteTemplate']=function(template,rewriterCallback,templateDocument){var templateSource=this['makeTemplateSource'](template,templateDocument);var rewritten=rewriterCallback(templateSource['text']());templateSource['text'](rewritten);templateSource['data']("isRewritten",true);};ko.exportSymbol('templateEngine',ko.templateEngine);ko.templateRewriting=(function(){var memoizeDataBindingAttributeSyntaxRegex=/(<[a-z]+\d*(\s+(?!data-bind=)[a-z0-9\-]+(=(\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind=(["'])([\s\S]*?)\5/gi;var memoizeVirtualContainerBindingSyntaxRegex=//g;function validateDataBindValuesForRewriting(keyValueArray){var allValidators=ko.expressionRewriting.bindingRewriteValidators;for(var i=0;i",templateEngine);});},applyMemoizedBindingsToNextSibling:function(bindings){return ko.memoization.memoize(function(domNode,bindingContext){if(domNode.nextSibling) +ko.applyBindingsToNode(domNode.nextSibling,bindings,bindingContext);});}}})();ko.exportSymbol('__tr_ambtns',ko.templateRewriting.applyMemoizedBindingsToNextSibling);(function(){// +ko.templateSources={};ko.templateSources.domElement=function(element){this.domElement=element;} +ko.templateSources.domElement.prototype['text']=function(){var tagNameLower=ko.utils.tagNameLower(this.domElement),elemContentsProperty=tagNameLower==="script"?"text":tagNameLower==="textarea"?"value":"innerHTML";if(arguments.length==0){return this.domElement[elemContentsProperty];}else{var valueToWrite=arguments[0];if(elemContentsProperty==="innerHTML") + ko.utils.setHtml(this.domElement,valueToWrite);else +this.domElement[elemContentsProperty]=valueToWrite;}};ko.templateSources.domElement.prototype['data']=function(key){if(arguments.length===1){return ko.utils.domData.get(this.domElement,"templateSourceData_"+key);}else{ko.utils.domData.set(this.domElement,"templateSourceData_"+key,arguments[1]);}};var anonymousTemplatesDomDataKey="__ko_anon_template__";ko.templateSources.anonymousTemplate=function(element){this.domElement=element;} +ko.templateSources.anonymousTemplate.prototype=new ko.templateSources.domElement();ko.templateSources.anonymousTemplate.prototype['text']=function(){if(arguments.length==0){var templateData=ko.utils.domData.get(this.domElement,anonymousTemplatesDomDataKey)||{};if(templateData.textData===undefined&&templateData.containerData) +templateData.textData=templateData.containerData.innerHTML;return templateData.textData;}else{var valueToWrite=arguments[0];ko.utils.domData.set(this.domElement,anonymousTemplatesDomDataKey,{textData:valueToWrite});}};ko.templateSources.domElement.prototype['nodes']=function(){if(arguments.length==0){var templateData=ko.utils.domData.get(this.domElement,anonymousTemplatesDomDataKey)||{};return templateData.containerData;}else{ var valueToWrite=arguments[0];ko.utils.domData.set(this.domElement,anonymousTemplatesDomDataKey,{containerData:valueToWrite});}};ko.exportSymbol('templateSources',ko.templateSources);ko.exportSymbol('templateSources.domElement',ko.templateSources.domElement);ko.exportSymbol('templateSources.anonymousTemplate',ko.templateSources.anonymousTemplate);})();(function(){var _templateEngine;ko.setTemplateEngine=function(templateEngine){if((templateEngine!=undefined)&&!(templateEngine instanceof ko.templateEngine)) +throw new Error("templateEngine must inherit from ko.templateEngine");_templateEngine=templateEngine;} +function invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,action){var node,nextInQueue=firstNode,firstOutOfRangeNode=ko.virtualElements.nextSibling(lastNode);while(nextInQueue&&((node=nextInQueue)!==firstOutOfRangeNode)){nextInQueue=ko.virtualElements.nextSibling(node);if(node.nodeType===1||node.nodeType===8) +action(node);}} +function activateBindingsOnContinuousNodeArray(continuousNodeArray,bindingContext){if(continuousNodeArray.length){var firstNode=continuousNodeArray[0],lastNode=continuousNodeArray[continuousNodeArray.length-1];invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,function(node){ko.applyBindings(bindingContext,node);});invokeForEachNodeOrCommentInContinuousRange(firstNode,lastNode,function(node){ko.memoization.unmemoizeDomNodeAndDescendants(node,[bindingContext]);});}} +function getFirstNodeFromPossibleArray(nodeOrNodeArray){return nodeOrNodeArray.nodeType?nodeOrNodeArray:nodeOrNodeArray.length>0?nodeOrNodeArray[0]:null;} +function executeTemplate(targetNodeOrNodeArray,renderMode,template,bindingContext,options){options=options||{};var firstTargetNode=targetNodeOrNodeArray&&getFirstNodeFromPossibleArray(targetNodeOrNodeArray);var templateDocument=firstTargetNode&&firstTargetNode.ownerDocument;var templateEngineToUse=(options['templateEngine']||_templateEngine);ko.templateRewriting.ensureTemplateIsRewritten(template,templateEngineToUse,templateDocument);var renderedNodesArray=templateEngineToUse['renderTemplate'](template,bindingContext,options,templateDocument);if((typeof renderedNodesArray.length!="number")||(renderedNodesArray.length>0&&typeof renderedNodesArray[0].nodeType!="number")) +throw new Error("Template engine must return an array of DOM nodes");var haveAddedNodesToParent=false;switch(renderMode){case "replaceChildren":ko.virtualElements.setDomNodeChildren(targetNodeOrNodeArray,renderedNodesArray);haveAddedNodesToParent=true;break;case "replaceNode":ko.utils.replaceDomNodes(targetNodeOrNodeArray,renderedNodesArray);haveAddedNodesToParent=true;break;case "ignoreTargetNode":break;default:throw new Error("Unknown renderMode: "+renderMode);} +if(haveAddedNodesToParent){activateBindingsOnContinuousNodeArray(renderedNodesArray,bindingContext);if(options['afterRender']) +ko.dependencyDetection.ignore(options['afterRender'],null,[renderedNodesArray,bindingContext['$data']]);} +return renderedNodesArray;} +ko.renderTemplate=function(template,dataOrBindingContext,options,targetNodeOrNodeArray,renderMode){options=options||{};if((options['templateEngine']||_templateEngine)==undefined) +throw new Error("Set a template engine before calling renderTemplate");renderMode=renderMode||"replaceChildren";if(targetNodeOrNodeArray){var firstTargetNode=getFirstNodeFromPossibleArray(targetNodeOrNodeArray);var whenToDispose=function(){return(!firstTargetNode)||!ko.utils.domNodeIsAttachedToDocument(firstTargetNode);};var activelyDisposeWhenNodeIsRemoved=(firstTargetNode&&renderMode=="replaceNode")?firstTargetNode.parentNode:firstTargetNode;return ko.dependentObservable(function(){var bindingContext=(dataOrBindingContext&&(dataOrBindingContext instanceof ko.bindingContext))?dataOrBindingContext:new ko.bindingContext(ko.utils.unwrapObservable(dataOrBindingContext));var templateName=typeof(template)=='function'?template(bindingContext['$data'],bindingContext):template;var renderedNodesArray=executeTemplate(targetNodeOrNodeArray,renderMode,templateName,bindingContext,options);if(renderMode=="replaceNode"){targetNodeOrNodeArray=renderedNodesArray;firstTargetNode=getFirstNodeFromPossibleArray(targetNodeOrNodeArray);}},null,{disposeWhen:whenToDispose,disposeWhenNodeIsRemoved:activelyDisposeWhenNodeIsRemoved});}else{return ko.memoization.memoize(function(domNode){ko.renderTemplate(template,dataOrBindingContext,options,domNode,"replaceNode");});}};ko.renderTemplateForEach=function(template,arrayOrObservableArray,options,targetNode,parentBindingContext){var arrayItemContext;var executeTemplateForArrayItem=function(arrayValue,index){arrayItemContext=parentBindingContext['createChildContext'](ko.utils.unwrapObservable(arrayValue),options['as']);arrayItemContext['$index']=index;var templateName=typeof(template)=='function'?template(arrayValue,arrayItemContext):template;return executeTemplate(null,"ignoreTargetNode",templateName,arrayItemContext,options);} +var activateBindingsCallback=function(arrayValue,addedNodesArray,index){activateBindingsOnContinuousNodeArray(addedNodesArray,arrayItemContext);if(options['afterRender']) +options['afterRender'](addedNodesArray,arrayValue);};return ko.dependentObservable(function(){var unwrappedArray=ko.utils.unwrapObservable(arrayOrObservableArray)||[];if(typeof unwrappedArray.length=="undefined") +unwrappedArray=[unwrappedArray];var filteredArray=ko.utils.arrayFilter(unwrappedArray,function(item){return options['includeDestroyed']||item===undefined||item===null||!ko.utils.unwrapObservable(item['_destroy']);});ko.dependencyDetection.ignore(ko.utils.setDomNodeChildrenFromArrayMapping,null,[targetNode,filteredArray,executeTemplateForArrayItem,options,activateBindingsCallback]);},null,{disposeWhenNodeIsRemoved:targetNode});};var templateComputedDomDataKey='__ko__templateComputedDomDataKey__';function disposeOldComputedAndStoreNewOne(element,newComputed){var oldComputed=ko.utils.domData.get(element,templateComputedDomDataKey);if(oldComputed&&(typeof(oldComputed.dispose)=='function')) +oldComputed.dispose();ko.utils.domData.set(element,templateComputedDomDataKey,(newComputed&&newComputed.isActive())?newComputed:undefined);} +ko.bindingHandlers['template']={'init':function(element,valueAccessor){var bindingValue=ko.utils.unwrapObservable(valueAccessor());if((typeof bindingValue!="string")&&(!bindingValue['name'])&&(element.nodeType==1||element.nodeType==8)){var templateNodes=element.nodeType==1?element.childNodes:ko.virtualElements.childNodes(element),container=ko.utils.moveCleanedNodesToContainerElement(templateNodes);new ko.templateSources.anonymousTemplate(element)['nodes'](container);} +return{'controlsDescendantBindings':true};},'update':function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var templateName=ko.utils.unwrapObservable(valueAccessor()),options={},shouldDisplay=true,dataValue,templateComputed=null;if(typeof templateName!="string"){options=templateName;templateName=options['name'];if('if' in options) +shouldDisplay=ko.utils.unwrapObservable(options['if']);if(shouldDisplay&&'ifnot' in options) +shouldDisplay=!ko.utils.unwrapObservable(options['ifnot']);dataValue=ko.utils.unwrapObservable(options['data']);} +if('foreach' in options){var dataArray=(shouldDisplay&&options['foreach'])||[];templateComputed=ko.renderTemplateForEach(templateName||element,dataArray,options,element,bindingContext);}else if(!shouldDisplay){ko.virtualElements.emptyNode(element);}else{var innerBindingContext=('data' in options)?bindingContext['createChildContext'](dataValue,options['as']):bindingContext;templateComputed=ko.renderTemplate(templateName||element,innerBindingContext,options,element);} +disposeOldComputedAndStoreNewOne(element,templateComputed);}};ko.expressionRewriting.bindingRewriteValidators['template']=function(bindingValue){var parsedBindingValue=ko.expressionRewriting.parseObjectLiteral(bindingValue);if((parsedBindingValue.length==1)&&parsedBindingValue[0]['unknown']) +return null;if(ko.expressionRewriting.keyValueArrayContainsKey(parsedBindingValue,"name")) +return null;return "This template engine does not support anonymous templates nested within its templates";};ko.virtualElements.allowedBindings['template']=true;})();ko.exportSymbol('setTemplateEngine',ko.setTemplateEngine);ko.exportSymbol('renderTemplate',ko.renderTemplate);ko.utils.compareArrays=(function(){var statusNotInOld='added',statusNotInNew='deleted';function compareArrays(oldArray,newArray,dontLimitMoves){oldArray=oldArray||[];newArray=newArray||[];if(oldArray.length<=newArray.length) +return compareSmallArrayToBigArray(oldArray,newArray,statusNotInOld,statusNotInNew,dontLimitMoves);else +return compareSmallArrayToBigArray(newArray,oldArray,statusNotInNew,statusNotInOld,dontLimitMoves);} +function compareSmallArrayToBigArray(smlArray,bigArray,statusNotInSml,statusNotInBig,dontLimitMoves){var myMin=Math.min,myMax=Math.max,editDistanceMatrix=[],smlIndex,smlIndexMax=smlArray.length,bigIndex,bigIndexMax=bigArray.length,compareRange=(bigIndexMax-smlIndexMax)||1,maxDistance=smlIndexMax+bigIndexMax+1, thisRow,lastRow,bigIndexMaxForRow,bigIndexMinForRow;for(smlIndex=0;smlIndex<=smlIndexMax;smlIndex++){lastRow=thisRow;editDistanceMatrix.push(thisRow=[]);bigIndexMaxForRow=myMin(bigIndexMax,smlIndex+compareRange);bigIndexMinForRow=myMax(0,smlIndex-1);for(bigIndex=bigIndexMinForRow;bigIndex<=bigIndexMaxForRow;bigIndex++){if(!bigIndex) +thisRow[bigIndex]=smlIndex+1;else if(!smlIndex) +thisRow[bigIndex]=bigIndex+1;else if(smlArray[smlIndex-1]===bigArray[bigIndex-1]) +thisRow[bigIndex]=lastRow[bigIndex-1];else{var northDistance=lastRow[bigIndex]||maxDistance;var westDistance=thisRow[bigIndex-1]||maxDistance;thisRow[bigIndex]=myMin(northDistance,westDistance)+1;}}} +var editScript=[],meMinusOne,notInSml=[],notInBig=[];for(smlIndex=smlIndexMax,bigIndex=bigIndexMax;smlIndex||bigIndex;){meMinusOne=editDistanceMatrix[smlIndex][bigIndex]-1;if(bigIndex&&meMinusOne===editDistanceMatrix[smlIndex][bigIndex-1]){notInSml.push(editScript[editScript.length]={'status':statusNotInSml,'value':bigArray[--bigIndex],'index':bigIndex});}else if(smlIndex&&meMinusOne===editDistanceMatrix[smlIndex-1][bigIndex]){notInBig.push(editScript[editScript.length]={'status':statusNotInBig,'value':smlArray[--smlIndex], 'index':smlIndex});}else{editScript.push({'status':"retained",'value':bigArray[--bigIndex]});--smlIndex;}} +if(notInSml.length&¬InBig.length){var limitFailedCompares=smlIndexMax*10,failedCompares,a,d,notInSmlItem,notInBigItem;for(failedCompares=a=0;(dontLimitMoves||failedCompares1){var current=contiguousNodeArray[0],last=contiguousNodeArray[contiguousNodeArray.length-1],newContiguousSet=[current];while(current!==last){current=current.nextSibling;if(!current) +return;newContiguousSet.push(current);} +Array.prototype.splice.apply(contiguousNodeArray,[0,contiguousNodeArray.length].concat(newContiguousSet));} +return contiguousNodeArray;} +function mapNodeAndRefreshWhenChanged(containerNode,mapping,valueToMap,callbackAfterAddingNodes,index){var mappedNodes=[];var dependentObservable=ko.dependentObservable(function(){var newMappedNodes=mapping(valueToMap,index)||[];if(mappedNodes.length>0){ko.utils.replaceDomNodes(fixUpNodesToBeMovedOrRemoved(mappedNodes),newMappedNodes);if(callbackAfterAddingNodes) +ko.dependencyDetection.ignore(callbackAfterAddingNodes,null,[valueToMap,newMappedNodes,index]);} +mappedNodes.splice(0,mappedNodes.length);ko.utils.arrayPushAll(mappedNodes,newMappedNodes);},null,{disposeWhenNodeIsRemoved:containerNode,disposeWhen:function(){return(mappedNodes.length==0)||!ko.utils.domNodeIsAttachedToDocument(mappedNodes[0])}});return{mappedNodes:mappedNodes,dependentObservable:(dependentObservable.isActive()?dependentObservable:undefined)};} +var lastMappingResultDomDataKey="setDomNodeChildrenFromArrayMapping_lastMappingResult";ko.utils.setDomNodeChildrenFromArrayMapping=function(domNode,array,mapping,options,callbackAfterAddingNodes){array=array||[];options=options||{};var isFirstExecution=ko.utils.domData.get(domNode,lastMappingResultDomDataKey)===undefined;var lastMappingResult=ko.utils.domData.get(domNode,lastMappingResultDomDataKey)||[];var lastArray=ko.utils.arrayMap(lastMappingResult,function(x){return x.arrayEntry;});var editScript=ko.utils.compareArrays(lastArray,array);var newMappingResult=[];var lastMappingResultIndex=0;var newMappingResultIndex=0;var nodesToDelete=[];var itemsToProcess=[];var itemsForBeforeRemoveCallbacks=[];var itemsForMoveCallbacks=[];var itemsForAfterAddCallbacks=[];var mapData;function itemMovedOrRetained(editScriptIndex,oldPosition){mapData=lastMappingResult[oldPosition];if(newMappingResultIndex!==oldPosition) +itemsForMoveCallbacks[editScriptIndex]=mapData;mapData.indexObservable(newMappingResultIndex++);fixUpNodesToBeMovedOrRemoved(mapData.mappedNodes);newMappingResult.push(mapData);itemsToProcess.push(mapData);} +function callCallback(callback,items){if(callback){for(var i=0,n=items.length;i=0){return 2;}}catch(ex){} +return 1;})();function ensureHasReferencedJQueryTemplates(){if(jQueryTmplVersion<2) +throw new Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");} +function executeTemplate(compiledTemplate,data,jQueryTemplateOptions){return jQuery['tmpl'](compiledTemplate,data,jQueryTemplateOptions);} +this['renderTemplateSource']=function(templateSource,bindingContext,options){options=options||{}; ensureHasReferencedJQueryTemplates();var precompiled=templateSource['data']('precompiled');if(!precompiled){var templateText=templateSource['text']()||"";templateText="{{ko_with $item.koBindingContext}}"+templateText+"{{/ko_with}}";precompiled=jQuery['template'](null,templateText);templateSource['data']('precompiled',precompiled);} +var data=[bindingContext['$data']];var jQueryTemplateOptions=jQuery['extend']({'koBindingContext':bindingContext},options['templateOptions']);var resultNodes=executeTemplate(precompiled,data,jQueryTemplateOptions);resultNodes['appendTo'](document.createElement("div"));jQuery['fragments']={};return resultNodes;};this['createJavaScriptEvaluatorBlock']=function(script){return "{{ko_code ((function() { return "+script+" })()) }}";};this['addTemplate']=function(templateName,templateMarkup){document.write("");};if(jQueryTmplVersion>0){jQuery['tmpl']['tag']['ko_code']={open:"__.push($1 || '');"};jQuery['tmpl']['tag']['ko_with']={open:"with($1) {",close:"} "};}};ko.jqueryTmplTemplateEngine.prototype=new ko.templateEngine();// +var jqueryTmplTemplateEngineInstance=new ko.jqueryTmplTemplateEngine();if(jqueryTmplTemplateEngineInstance.jQueryTmplVersion>0) +ko.setTemplateEngine(jqueryTmplTemplateEngineInstance);ko.exportSymbol('jqueryTmplTemplateEngine',ko.jqueryTmplTemplateEngine);})();});})(window,document,navigator,window["jQuery"]);})(); \ No newline at end of file