/* 
 This file was generated by Dashcode and is covered by the 
 license.txt included in the project.  You may edit this file, 
 however it is recommended to first turn off the Dashcode 
 code generator otherwise the changes will be lost.
 */

var dashcodePartSupport = { "imageBgParts": {} };
if(!window.dashcode){dashcode=new Object()}dashcode.setupParts=function(){if(dashcode.setupParts.called){return }dashcode.setupParts.called=true;var H=[];if(window.dashcodeDataSources&&!dashcode.inDesign){for(var C in dashcodeDataSources){var E=dashcodeDataSources[C];var A=dashcode.setupDataSource(C,E);if(A){A.registerWithName(C)}}}for(var C in dashcodePartSpecs){dashcode.preProcessBindings(dashcodePartSpecs[C])}if(!DC.Support.BorderImage){var G=dashcodePartSupport.imageBgParts;for(var B in G){var D=G[B];Element.set3PiecesBorderImage(document.getElementById(B),D[0],D[1],D[2])}}for(var C in dashcodePartSpecs){var E=dashcodePartSpecs[C];var F=dashcode.setupPart(C,E.creationFunction,E.view,E);if(F&&F.finishLoading){H[H.length]=F}}for(var I=0;I<H.length;I++){H[I].finishLoading()}};dashcode.setupPart=function(elementOrId,creationFunction,viewClass,specDict,relativeController){var object=null;var createFunc=window[creationFunction];var node=elementOrId;if(elementOrId.nodeType!=1){node=document.getElementById(elementOrId)}if(!node){return null}if(createFunc){object=createFunc(node,specDict)}else{var viewClass=null;object=DC.View.fromNode(node);if(object){return object}if(specDict.view){viewClass=eval(specDict.view)}if(dashcode.inDesign){dashcode.preProcessBindings(specDict)}if(!viewClass){viewClass=DC.View.viewClassForNode(node,specDict.hasBindings)||DC.View}object=new (viewClass)(node,relativeController,specDict.propertyValues,specDict);node.object=object}return object};dashcode.setupDataSource=function(identifier,specDict){var dsClass=null;var dataSource=null;try{dsClass=specDict.Class?eval(specDict.Class):null}catch(e){}if(!dsClass){console.error("Couldn't create data source "+identifier+". Invalid class specified.");return null}var propertyValues=specDict.propertyValues;dataSource=new dsClass(propertyValues);return dataSource};dashcode.getDataSource=function(A){return DC.dataModel.valueForKey(A)};dashcode.preProcessBindings=function(A){if(A&&A.propertyValues&&!A.hasBindings){for(p in A.propertyValues){if(-1!==p.search(/Binding$/)){A.hasBindings=true;if(dashcode.inDesign){delete A.propertyValues[p]}else{break}}}}};if(window.addEventListener){window.addEventListener("load",dashcode.setupParts,false)}else{if(window.attachEvent){window.attachEvent("load",dashcode.setupParts)}}dashcode.getLocalizedString=function(A){try{A=localizedStrings[A]||A}catch(B){}return A};dashcode.createInstancePreferenceKey=function(A){return widget.identifier+"-"+A};dashcode.getElementHeight=function(B){var A=B.offsetHeight;if(!A||A==0){A=dashcode.getElementSize(B).height}return A};dashcode.getElementWidth=function(B){var A=B.offsetWidth;if(!A||A==0){A=dashcode.getElementSize(B).width}return A};dashcode.getElementSize=function(B){var A=dashcode.getElementSizesWithAncestor([B],B);return A[0]};dashcode.getElementSizesWithAncestor=function(A,F){if(A.length<1){return[]}var B=new Array();var C=A[0].offsetWidth;if(!C||C==0){var G=F;while(G&&(G!=document)){var I=Element.getStyles(G,"display");var H=(I)?I:G.style.display;if((I&&H=="none")||(!I&&H!="block")){B.push({node:G,display:G.style.display});G.style.display="block"}G=G.parentNode}}var J=new Array();for(var E=0;E<A.length;E++){J.push({width:A[E].offsetWidth,height:A[E].offsetHeight})}for(var E=0;E<B.length;E++){var D=B[E].node;D.style.display=B[E].display;if(D.getAttribute("style")==""){D.removeAttribute("style")}}return J};dashcode.getElementDocumentOffset=function(B){var C=B.offsetParent;var D={x:B.offsetLeft,y:B.offsetTop};if(C){var A=dashcode.getElementDocumentOffset(C);D.x+=A.x;D.y+=A.y}return D};dashcode.pointInElement=function(A,E,D){var C=dashcode.getElementSize(D);var B=dashcode.getElementDocumentOffset(D);if(A>=B.x){if(A>B.x+C.width){return false}if(E>=B.y){if(E>B.y+C.height){return false}}else{return false}}else{return false}return true};dashcode.cloneTemplateElement=function(B,A,C){return DC.View.cloneViewsForTreeNode(B,C,null)};dashcode.processClonedTemplateElement=function(D,C,B,F,E,A){console.error("dashcode.processClonedTemplateElement is no longer available.")};var setupParts=dashcode.setupParts;var getLocalizedString=dashcode.getLocalizedString;var createInstancePreferenceKey=dashcode.createInstancePreferenceKey;var getElementHeight=dashcode.getElementHeight;var getElementWidth=dashcode.getElementWidth;var getElementSize=dashcode.getElementSize;if(!("querySelector" in document)){document.write('<script apple-no-regeneration="yes" type="text/javascript" src="../Parts/core/external/sizzle_c.js"><\/script>')};if("undefined"!==typeof (DC)){throw new Error("Library module (DC) already defined")}var DC={version:"@VERSION@",revision:"@REVISION@",generateUid:(function(){var A=0;return function(){return ++A}})()};DC.Browser={IE:!!(window.attachEvent&&!window.opera)&&(function(){var B=/MSIE (\d+)/;var A=B.exec(navigator.userAgent);return A&&parseInt(A[1],10)})(),Safari:navigator.userAgent.indexOf("AppleWebKit/")>-1,Safari2:(function(){var A=/AppleWebKit\/(\d+(?:\.\d+)?)/;var B=A.exec(navigator.userAgent);return(B&&parseInt(B[1],10)<420)})(),Mozilla:navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")==-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)};DC.Support={Properties:("__defineGetter__" in Object.prototype),QuerySelector:("querySelector" in document),Touches:!!document.createTouch,CSS3ColorModel:false,CSSTransitions:false,BorderImage:(function(){var A=document.createElement("div").style;A.cssText="-webkit-border-image: inherit; -moz-border-image: inherit;";return(A.WebkitBorderImage=="inherit")||(A.MozBorderImage=="inherit")})()};if(DC.Support.Properties){DC.Support.__defineGetter__("CSS3ColorModel",function(){delete this.CSS3ColorModel;var B=document.createElement("span");try{B.style.backgroundColor="rgba(100,100,100,0.5)";return this.CSS3ColorModel=(B.style.length===1)}catch(A){}return(this.CSS3ColorModel=false)});DC.Support.__defineGetter__("CSSTransitions",function(){delete this.CSSTransitions;var B=document.createElement("span");try{B.style.setProperty("-webkit-transition-duration","1ms","");return this.CSSTransitions=(B.style.length===1)}catch(A){}return(this.CSSTransitions=false)})}DC.typeOf=function(B){if(null===B){return"null"}var A=typeof (B);if("object"!==A&&"function"!==A){return A}return Object.prototype.toString.call(B).slice(8,-1).toLowerCase()};DC.compareValues=function(F,D){var C=DC.typeOf(F);if(C!==DC.typeOf(D)){var A=String(F);var E=String(D);return A.localeCompare(E)}switch(C){case"null":return 0;case"boolean":case"number":var B=(F-D);if(0===B){return B}return(B<0?-1:1);case"regexp":case"function":break;case"string":case"array":case"object":if(F.localeCompare){return F.localeCompare(D)}if(F.compare){return F.compare(D)}break;case"undefined":return true;default:throw new TypeError("Unknown type for comparison: "+C)}return String(F).localeCompare(String(D))};DC.defineError=function(B){function A(C){this.message=C;this.name=B}A.prototype=new Error;A.prototype.constructor=A;A.prototype.name=B;return A};var InvalidArgumentError=DC.defineError("InvalidArgumentError");if("undefined"==typeof (window.console)){window.console={}}if("undefined"==typeof (window.console.log)){window.console.log=function(){}}if("undefined"==typeof (window.console.error)){window.console.error=function(){}};if("undefined"!==typeof (window.Prototype)){(function(){var A=["indexOf","lastIndexOf","forEach","filter","map","some","every","reduce","reduceRight"];for(var B=0;B<A.length;++B){delete Array.prototype[A[B]]}})()}Array.prototype.distinct=function(){var B=this.length;var A=new Array(B);var C;var E;var D=0;for(C=0;C<B;++C){E=this[C];if(-1==A.indexOf(E)){A[D++]=E}}A.length=D;return A};Array.prototype.compare=function(B){var D=this.length-B.length;if(0!==D){return D}var E;var A;var C;for(E=0,A=this.length;E<A;++E){C=DC.compareValues(this[E],B[E]);if(0!==C){return C}}return 0};Array.from=function(A,B){return Array.prototype.slice.call(A,B||0)};if(!Array.prototype.reduce){Array.prototype.reduce=function(B){var A=this.length;if(typeof B!="function"){throw new TypeError()}if(0===A&&1===arguments.length){throw new TypeError()}var C=0;if(arguments.length>=2){var D=arguments[1]}else{do{if(C in this){D=this[C++];break}if(++C>=A){throw new TypeError()}}while(true)}for(;C<A;C++){if(C in this){D=B.call(null,D,this[C],C,this)}}return D}}if(!Array.prototype.reduceRight){Array.prototype.reduceRight=function(B){var A=this.length;if(typeof B!="function"){throw new TypeError()}if(0===A&&1===arguments.length){throw new TypeError()}var C=A-1;if(arguments.length>=2){var D=arguments[1]}else{do{if(C in this){D=this[C--];break}if(--C<0){throw new TypeError()}}while(true)}for(;C>=0;C--){if(C in this){D=B.call(null,D,this[C],C,this)}}return D}}if(!Array.indexOf){Array.indexOf=function(C,B,A){return Array.prototype.indexOf.call(C,B,A)}}if(!Array.lastIndexOf){Array.lastIndexOf=function(C,B,A){return Array.prototype.lastIndexOf.call(C,B,A)}}if(!Array.forEach){Array.forEach=function(C,A,B){return Array.prototype.forEach.call(C,A,B)}}if(!Array.filter){Array.filter=function(C,A,B){return Array.prototype.filter.call(C,A,B)}}if(!Array.map){Array.map=function(C,A,B){return Array.prototype.map.call(C,A,B)}}if(!Array.some){Array.some=function(C,A,B){return Array.prototype.some.call(C,A,B)}}if(!Array.every){Array.every=function(C,A,B){return Array.prototype.every.call(C,A,B)}}if(!Array.reduce){Array.reduce=function(B,A){if(arguments.length>2){return Array.prototype.reduce.apply(B,A,arguments[2])}else{return Array.prototype.reduce.apply(B,A)}}}if(!Array.reduceRight){Array.reduceRight=function(B,A){if(arguments.length>2){return Array.prototype.reduceRight.apply(B,A,arguments[2])}else{return Array.prototype.reduceRight.apply(B,A)}}};function Set(){var D=this;if(D.constructor!==Set){D=new Set()}var B=arguments;if(1==B.length&&B[0] instanceof Array){B=B[0]}var C;var A=B.length;for(C=0;C<A;++C){D[B[C]]=true}return D}Set.union=function(C,B){var A=Object.clone(C);if(!B){return A}var D;for(D in B){A[D]=true}return A};Set.intersect=function(C,B){var A=new Set();var D;for(D in C){if(D in B){A[D]=true}}return A};Set.add=function(B,A){B[A]=true;return B};Set.remove=function(B,A){delete B[A];return B};Set.toArray=function(C){var B;var A=[];for(B in C){A.push(B)}return A};Set.forEach=function(E,C,B){var D;var A=0;for(D in E){C.call(B,D,A++)}};Set.join=function(D,B){var C;var A=[];for(C in D){A.push(C)}return A.join(B||"")};var $S=Set;var Class=(function(){function D(I,L){var J;if(!I&&!L){return I}if(!I){J=function(){return L.apply(this,arguments)}}else{var K=/this\.base/.test(I);if(!K&&!L){return I}if(!K){J=function(){L.call(this);return I.apply(this,arguments)}}else{J=function(){var N=this.base;this.base=L||function(){};var M=I.apply(this,arguments);this.base=N;return M}}}J.valueOf=function(){return I};J.toString=function(){return String(I)};return J}function G(I,J){var K=I.prototype.__factory__.apply(I,J);if("function"!==typeof (K)){throw new Error("Factory function doesn't return a function")}K.__factoryFn__=true;return K}function F(K){if(K.__createFactoryObjects){K.__createFactoryObjects();return }var J;var I;for(J in K.__factories__){I=K[J];if(!I.__factoryFn__){continue}K[J]=I.call(K)}}function C(I,K){if(I&&!(I instanceof Function)){throw new Error("Invalid constructor")}if(K&&!(K instanceof Function)){throw new Error("Invalid superclass")}K=K?K.valueOf():null;I=D(I,K);var J;if(I){J=function(){if(!(this instanceof J)){return G(J,arguments)}this.__uid=this.__uid||DC.generateUid();var L=I.apply(this,arguments);if(L){return L}F(this);if(this.__postConstruct instanceof Function){this.__postConstruct()}return this}}else{J=function(){if(!(this instanceof J)){return G(J,arguments)}this.__uid=this.__uid||DC.generateUid();F(this);if(this.__postConstruct instanceof Function){this.__postConstruct()}return this}}J.valueOf=function(){return I};J.toString=function(){return String(I||J)};return J}function B(J){function I(){}I.prototype=J.prototype;return new I()}function E(L,J,K){if(!L||!/this\.base/.test(L)){return L}function I(){var N=this.base;this.base=K[J]||function(){};var M=L.apply(this,arguments);this.base=N;return M}I.valueOf=function(){return L};I.toString=function(){return String(L)};return I}function H(J,I,K,L){if(K instanceof Function&&L){var M=K.valueOf();K=E(K,I,L);K.name=I;if(M.__factoryFn__){J.__factories__[I]=K}}J[I]=K;return K}function A(J){var I;for(I=J.superclass;I;I=I.superclass){if("__subclassCreated__" in I){I.__subclassCreated__(J)}}}return{create:function(L,J){var I;var K={};switch(arguments.length){case 0:throw new TypeError("Missing superclass and declaration arguments");case 1:J=L;L=undefined;break;default:K=B(L);break}if("function"==typeof (J)){J=J();if(!J){throw new Error("Class declaration function did not return a prototype")}}if(J.hasOwnProperty("constructor")){I=J.constructor;delete J.constructor}I=C(I,L);I.prototype=K;I.prototype.constructor=I;I.superclass=L;if(L){K.__factories__=Object.clone(L.prototype.__factories__)}else{K.__factories__={}}I.__class_id__=DC.generateUid();K.__class_id__=DC.generateUid();this.extend(I,J);A(I);return I},findPropertyName:function(L,I){var J;for(var K in L){J=L[K];if(J===I||("function"===typeof (J)&&J.valueOf()===I)){return K}}return null},extend:(function(){if(DC.Support.Properties){return function(I,J){var N=I.prototype;var P=I.superclass&&I.superclass.prototype;var K;for(var O in J){var M=J.__lookupGetter__(O);var L=J.__lookupSetter__(O);if(M||L){M&&N.__defineGetter__(O,M);L&&N.__defineSetter__(O,L)}else{H(N,O,J[O],P)}}return I}}else{return function(I,J){var K=I.prototype;var M=I.superclass&&I.superclass.prototype;for(var L in J){H(K,L,J[L],M)}}}})()}})();if(!Function.prototype.bind){Function.prototype.bind=function(C){var A=this;if(!arguments.length){return A}if(1==arguments.length){return function(){return A.apply(C,arguments)}}var B=Array.from(arguments,1);return function(){return A.apply(C,B.concat(Array.from(arguments)))}}}if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(C){var A=this;if(1==arguments.length){return function(D){return A.call(C,D||window.event)}}var B=Array.from(arguments);B.shift();return function(D){return A.apply(C,[D||window.event].concat(B))}}}if(!Function.prototype.delay){Function.prototype.delay=function(D){var B=this;D=D||10;if(arguments.length<2){function A(){B()}return window.setTimeout(A,D)}var C=Array.from(arguments,1);function E(){B.apply(B,C)}return window.setTimeout(E,D)}}if(!Function.prototype.bindAndDelay){Function.prototype.bindAndDelay=function(F,D){var B=this;F=F||B;D=D||10;if(arguments.length<3){function A(){B.call(F)}return window.setTimeout(A,D)}var C=Array.from(arguments,2);function E(){B.apply(F,C)}return window.setTimeout(E,D)}}Function.prototype.sync=function(){var B=arguments.length?this.bind.apply(this,arguments):this;var A={};var C=false;B.stop=function(){C=true};B.waitFor=function(D){A[D]=true;return function(){A[D]=false;for(var E in A){if(A[E]){return }}if(C){return }B()}};return B};Object.clone=function(B){var A=(function(){});A.prototype=B;return new A()};Object.applyDefaults=function(C,B){C=C||{};if(!B){return C}for(var A in B){if(A in C){continue}C[A]=B[A]}return C};Object.extend=function(C,A){C=C||{};for(var B in A){C[B]=A[B]}return C};Object.merge=function(C,A){var B={};var D;for(D in C){B[D]=C[D]}for(D in A){if(D in B){continue}B[D]=A[D]}return B};(function(){var B=Set("file","submit","image","reset","button");var D={};function E(I,H,J){var G=I[H];var F=DC.typeOf(G);if("string"===F){I[H]=[G,J]}else{if("array"===F){G.push(J)}else{I[H]=J}}}function C(H){var F=H.name;var G=(H.type||"").toLowerCase();if(H.disabled||G in B){return }if("radio"===G||"checkbox"===G){if(H.checked){E(this,F,H.value)}}else{if(H.multiple){function I(J){if(J.selected){E(this,F,J.value)}}this[F]=[];Array.forEach(H.options,I,this)}else{E(this,F,H.value);if("image"===G){E(this,F+".x",0);E(this,F+".y",0)}}}}Object.fromForm=function(G){var F={};Array.forEach(G.elements,C,F);return F};function A(H){H=H.split("=");if(1===H.length){return }var F=decodeURIComponent(H[0].trim());var G=decodeURIComponent(H[1].trim())||null;E(this,F,G)}Object.fromQueryString=function(G){if("?"==G.charAt(0)){G=G.slice(1)}G=G.split(/\s*&\s*/);var F={};G.forEach(A,F);return F};Object.toQueryString=function(K){if(!K){return""}var H;var J;var F;var G=[];function I(M){if(null!==M&&"undefined"!==typeof (M)){M=encodeURIComponent(M)}var L=M+"";if(L.length){G.push(H+"="+L)}else{G.push(H)}}for(H in K){J=K[H];F=DC.typeOf(J);if("function"===F||J===D[H]){continue}H=encodeURIComponent(H);if("array"===F){J.forEach(I)}else{I(J)}}return G.join("&")}})();RegExp.escape=function(A){return A.replace(RegExp._escapeRegex,"\\$1")};RegExp.specialCharacters=["/",".","*","+","?","|","(",")","[","]","{","}","\\"];RegExp._escapeRegex=new RegExp("(\\"+RegExp.specialCharacters.join("|\\")+")","g");DC.strings={"marker.input.multipleValues":"Multiple Values","marker.input.placeholder":"","marker.input.noSelection":"No Selection","marker.text.multipleValues":"Multiple Values","marker.text.placeholder":"","marker.text.noSelection":"No Selection","error.no_description":"An unspecified error occurred.","error.invalid_value":"This value is not valid.","error.invalid_number":"This value is not a valid number."};DC.localisedString=function(A){return{toString:function(){if(A in DC.strings){return DC.strings[A]}console.log("Localisation missing string for key: "+A);return A}}};var _=DC.localisedString;DC.Error=Class.create({constructor:function(A){Object.extend(this,A)},description:_("error.no_description"),recoverySuggestion:null});DC.KeyInfo=Class.create({constructor:function(D,B){var A=DC.KVO.getPropertyMethodsForKeyOnObject(B,D);this.__uid=[B,DC.generateUid()].join("_");this.reader=A.getter;this.mutator=A.mutator;this.validator=A.validator;this.key=B;this.mutable=((this.mutator||!this.reader)?true:false);if(!this.reader&&!this.mutator){this.mutable=true}this.changeCount=0;var C=A.value;if(!C){return }var E=DC.typeOf(C);if(E in DC.KVO.typesOfKeyValuesToIgnore||!C._addParentLink){return }C._addParentLink(D,this)},get:function(B){if(this.reader){return this.reader.call(B)}var A;if(this.key in B){A=B[this.key]}else{A=null}if(A&&A._addParentLink){A._addParentLink(B,this)}return A},set:function(B,A){if(this.mutator){this.mutator.call(B,A)}else{B.willChangeValueForKey(this.key,this);B[this.key]=A;B.didChangeValueForKey(this.key,this)}},validate:function(B,A){if(!this.validator){return A}return this.validator.call(B,A)},unlinkParentLink:function(){if(!this.parentLink){return }this.parentLink.observer=null;this.parentLink.callback=null;this.parentLink=null}});DC.ChangeType={setting:0,insertion:1,deletion:2,replacement:3};DC.ChangeNotification=Class.create({constructor:function(D,A,E,C,B){this.object=D;this.changeType=A;this.newValue=E;this.oldValue=C;this.indexes=B;this.objectKeyPath=[]},toString:function(){var A="[ChangeNotification changeType: ";switch(this.changeType){case DC.ChangeType.setting:A+="setting";break;case DC.ChangeType.insertion:A+="insertion";break;case DC.ChangeType.deletion:A+="deletion";break;case DC.ChangeType.replacement:A+="replacement";break;default:A+="<<unknown>>";break}A+=" newValue="+this.newValue+" oldValue="+this.oldValue+(this.indexes?" indexes="+this.indexes.join(", "):"")+"]";return A}});DC.ObserverEntry=Class.create({constructor:function(A,C,B){this.observer=A;this.callback=C;this.context=B},observeChangeForKeyPath:function(A,B){if(!this.callback||!this.observer||-1!==A.objectKeyPath.indexOf(this.observer)){return }this.callback.call(this.observer,A,B,this.context)}});DC.KVO=Class.create({constructor:function(){},__factory__:function(){var B=Array.from(arguments);var A=this;function C(){}return function(){C.prototype=A.prototype;var D=new C();A.prototype.constructor.apply(D,B);return D}},setValueForKeyPath:function(C,D){if(!D||0===D.length){throw new InvalidArgumentError("keyPath may not be empty")}if("string"==typeof (D)){D=D.split(".")}var B=D[0];if(1==D.length){this.setValueForKey(C,B);return }if("@"==B.charAt(0)){return }var A=this.valueForKey(B);if(!A){return }A.setValueForKeyPath(C,D.slice(1))},setValueForKey:function(B,A){if(!A||0===A.length){throw new InvalidArgumentError("key may not be empty")}var C=this.infoForKey(A);if(!C||!C.mutable){return }C.set(this,B)},valueForKeyPath:function(E){if(!E||0===E.length){throw new InvalidArgumentError("keyPath may not be empty")}if("string"==typeof (E)){E=E.split(".")}var D=E[0];if(1==E.length){return this.valueForKey(D)}if("@"==D.charAt(0)){var B=D.substr(1);var A=this.valueForKeyPath(E.slice(1));return DC.ArrayOperator[B](A)}var C=this.valueForKey(D);if("undefined"===typeof (C)||null===C){return undefined}return C.valueForKeyPath(E.slice(1))},valueForKey:function(A){if(!A||0===A.length){throw new InvalidArgumentError("the key is empty")}var B=this.infoForKey(A);if(!B){return null}return B.get(this)},validateValueForKeyPath:function(C,D){if(!D||0===D.length){throw new InvalidArgumentError("keyPath may not be empty")}if("string"==typeof (D)){D=D.split(".")}var B=D[0];if(1==D.length){return this.validateValueForKey(C,B)}var A=this.valueForKey(B);if("undefined"===typeof (A)||null===A){return C}return A.validateValueForKeyPath(C,D.slice(1))},validateValueForKey:function(B,A){if(!A||!A.length){throw new InvalidArgumentError("missing key")}var C=this.infoForKey(A);return C.validate(this,B)},observeChildObjectChangeForKeyPath:function(D,C,A){if(DC.KVO.kAllPropertiesKey!=C){C=A+"."+C}else{C=A}var B=Object.clone(D);B.object=this;this.notifyObserversOfChangeForKeyPath(B,C)},infoForKeyPath:function(D){if(!D||0===D.length){throw new InvalidArgumentError("keyPath is empty")}if("string"==typeof (D)){D=D.split(".")}var B=D[0];if(1==D.length){return this.infoForKey(B)}else{if("@"==B.charAt(0)){var C=new DC.KeyInfo(null,null);C.mutable=false;return C}else{var A=this.valueForKey(B);if(!A){return undefined}if(!A.infoForKeyPath){return undefined}return A.infoForKeyPath(D.slice(1))}}},infoForKey:function(A){var B;if(!this.__keys){this.__keys={}}if(DC.KVO.kAllPropertiesKey==A){return null}B=this.__keys[A];if(B){return B}B=new DC.KeyInfo(this,A);this.__keys[A]=B;return B},setKeysTriggerChangeNotificationsForDependentKey:function(D,C){if(!D||!D.length){throw new InvalidArgumentError("keys array is not valid")}if(!C){throw new InvalidArgumentError("dependentKey can not be null")}if(-1!==C.indexOf(".")){throw new InvalidArgumentError("dependentKey may not be a key path")}var B;var F;var A;var E;if("string"===typeof (D)){D=[D]}if(!this.__dependentKeys){this.__dependentKeys={}}for(A=0;A<D.length;++A){B=D[A];if(!B){throw new InvalidArgumentError("key at index "+A+" was null")}if(!(B in this.__dependentKeys)){this.__dependentKeys[B]=[]}DC.KVO.getPropertyMethodsForKeyOnObject(B,this);E=this.__dependentKeys[B];if(-1==E.indexOf(C)){E.push(C)}}},mutableKeys:function(){var D=[];var B;var A;var C;if("__mutableKeys" in this&&this.__mutableKeys.concat){return this.__mutableKeys}var E=Set.union(DC.KVO.keysToIgnore,this.__keysToIgnore);for(B in this){if(B in E||"__"===B.substr(0,2)){continue}A=this[B];if("function"!==typeof (A)){D.push(B);continue}if(1!==A.length||"set"!==B.substr(0,3)){continue}C=B.charAt(3);if(C!==C.toUpperCase()){continue}B=C.toLowerCase()+B.substr(4);if(-1===D.indexOf(B)){D.push(B)}}return D},initialiseKeyValueObserving:function(){this.__uid=this.__uid||DC.generateUid();this.__observers={}},_addParentLink:function(D,E,C){if(!this.hasOwnProperty("__observers")){this.initialiseKeyValueObserving()}var B=this.__observers[DC.KVO.kAllPropertiesKey];if(!B){B=this.__observers[DC.KVO.kAllPropertiesKey]={}}C=C||E.__uid;if(C in B){return }var A=new DC.ObserverEntry(D,D.observeChildObjectChangeForKeyPath,E?E.key:"");B[C]=A;if(!E){return }E.unlinkParentLink();E.parentLink=A},_removeParentLink:function(C,D,B){if(!this.__observers){return }var A=this.__observers[DC.KVO.kAllPropertiesKey];if(!A){A=this.__observers[DC.KVO.kAllPropertiesKey]={}}B=B||D.__uid;if(D&&D.parentLink===A[B]){D.unlinkParentLink()}delete A[B]},addObserverForKeyPath:function(A,E,D,B){if(!D||0===D.length){throw new InvalidArgumentError("keyPath is empty")}if(!A){throw new InvalidArgumentError("Observer may not be null")}if(!E){E=A.observeChangeForKeyPath}if("string"===typeof (E)){E=A[E]}if(!E){throw new InvalidArgumentError("Missing callback method")}if(!this.hasOwnProperty("__observers")){this.initialiseKeyValueObserving()}if(!this.__observers[D]){this.infoForKeyPath(D);this.__observers[D]=[]}var C=new DC.ObserverEntry(A,E,B);this.__observers[D].push(C)},removeObserverForKeyPath:function(C,F){if(!F||0===F.length){throw new InvalidArgumentError("keyPath may not be empty")}if(!C){throw new InvalidArgumentError("Observer may not be null")}if(!this.__observers||!this.__observers[F]){return }var E=this.__observers[F];var B=-1;var D;var A=E.length;for(B=0;B<A;++B){D=E[B];if(D.observer==C){E.splice(B,1);return }}},willChangeValueForKey:function(A,C){if(!A){throw new InvalidArgumentError("key may not be null")}C=(C instanceof DC.KeyInfo)?C:this.infoForKey(A);if(!C){return }if(1!==++C.changeCount){return }var B=(this.__dependentKeys&&this.__dependentKeys[A]);if(B){B.forEach(this.willChangeValueForKey,this)}C.previousValue=C.get(this)},forceChangeNotificationForKey:function(A,B){if(!A){throw new InvalidArgumentError("key may not be null")}B=(B instanceof DC.KeyInfo)?B:this.infoForKey(A);if(!B){return }if(0!==B.changeCount){return }B.changeCount=1;this.didChangeValueForKey(A,B)},didChangeValueForKey:function(B,F){if(!B){throw new InvalidArgumentError("key may not be null")}F=(F instanceof DC.KeyInfo)?F:this.infoForKey(B);if(!F){return }if(0!==--F.changeCount){return }var C=F.get(this);var A=F.previousValue;F.previousValue=null;if(C!==A){var E=new DC.ChangeNotification(this,DC.ChangeType.setting,C,A);this.notifyObserversOfChangeForKeyPath(E,B);if(A&&A._removeParentLink){A._removeParentLink(this,F)}if(C&&C._addParentLink){C._addParentLink(this,F)}}var D=(this.__dependentKeys&&this.__dependentKeys[B]);if(D){D.forEach(this.didChangeValueForKey,this)}},notifyObserversOfChangeForKeyPath:function(J,L){if(!L){throw new InvalidArgumentError("keyPath may not be null")}if(!this.__observers){return }var G;var F;var H;F=this.__observers[DC.KVO.kAllPropertiesKey];if(F){var E=Object.clone(J);var A=J.objectKeyPath.length;J.objectKeyPath.push(this);for(G in F){var B=F[G];B.observeChangeForKeyPath(E,L)}J.objectKeyPath.length=A}if(DC.KVO.kAllPropertiesKey==L){return }F=this.__observers[L];if(F&&F.length){H=F.length;for(G=0;G<H;++G){F[G].observeChangeForKeyPath(J,L)}}var D=L+".";var I=D.length;var K;var M;var P;var O;var C;var N=!(null===J.oldValue||"undefined"===typeof (J.oldValue));for(M in this.__observers){if(M.substr(0,I)!=D){continue}F=this.__observers[M];if(!F||!F.length){continue}K=M.substr(I);O=J.oldValue;if(O&&O.valueForKeyPath){O=O.valueForKeyPath(K)}else{O=null}C=J.newValue;if(C&&C.valueForKeyPath){C=C.valueForKeyPath(K)}else{C=null}if(N&&O===C){continue}P=new DC.ChangeNotification(J.object,J.changeType,C,O,J.indexes);H=F.length;for(G=0;G<H;++G){F[G].observeChangeForKeyPath(P,M)}}}});DC.KVO.kAllPropertiesKey="*";DC.KVO.keysToIgnore=$S("__keys","__observers","__keysToIgnore","__dependentKeys","__mutableKeys","__factories__");DC.KVO.typesOfKeyValuesToIgnore=$S("string","number","boolean","date","regexp","function");DC.KVO.getPropertyMethodsForKeyOnObject=(function(){function B(H,F){F=F||"__kvo_prop_"+H;var G={getter:function(){var I=null;if(F in this){I=this[F]}var J=this.__keys?this.__keys[H]:null;if(!J){return I}if(I&&I._addParentLink){I._addParentLink(this,J)}else{J.unlinkParentLink()}return I},mutator:function(I){this.willChangeValueForKey(H);if("undefined"===typeof (I)){I=null}this[F]=I;this.didChangeValueForKey(H);return I}};G.mutator.__key=H;G.getter.__key=H;return G}function C(H,G){function F(J){this.willChangeValueForKey(G);var I=H.call(this,J);this.didChangeValueForKey(G);return I}F.__key=G;F.valueOf=function(){return H};F.toString=function(){return String(H)};return F}function D(F,H){function G(){var I=F.call(this);var J=this.__keys?this.__keys[H]:null;if(!J){return I}if(I&&I._addParentLink){I._addParentLink(this,J)}else{J.unlinkParentLink()}return I}G.__key=H;G.valueOf=function(){return F};G.toString=function(){return String(F)};return G}function E(T,K){var M=K.constructor.prototype;var J=(M==K);var L=(M!=Object.prototype&&M!=DC.KVO.prototype)?M:K;var U=T.titleCase();var P="get"+U;var Q="set"+U;var I="validate"+U;var O;var H;var S;var F=K[I];var N=("undefined"!==typeof (O=K.__lookupGetter__(T))&&"undefined"!==typeof (H=K.__lookupSetter__(T)));if(!N){P=(P in K)?P:T;O=K[P];H=K[Q]}if("function"!==typeof (O)){var R="__kvo_prop_"+T;var G=B(T,R);if(T in K){S=K[R]=("undefined"==typeof (O)?null:O);delete K[T]}O=G.getter;H=G.mutator;N=true}else{if(O&&!J){S=O.valueOf().call(K)}if(O&&T!==O.__key){O=D(O,T)}if(H&&T!==H.__key){H=C(H,T)}}if(N){L.__defineGetter__(T,O);L.__defineSetter__(T,H)}else{if(O){if(K.hasOwnProperty(P)){K[P]=O}else{L[P]=O}}if(H){if(K.hasOwnProperty(Q)){K[Q]=H}else{L[Q]=H}}}return{getter:O,mutator:H,validator:F,value:S}}function A(Q,J){var L=J.constructor.prototype;var I=(L==J);var K=(L!=Object.prototype&&L!=DC.KVO.prototype)?L:J;var R=Q.titleCase();var O="set"+R;var N="get"+R;var H="validate"+R;N=(N in J)?N:Q;var M=J[N];var G=J[O];var F=J[H];var P;if("function"!==typeof (M)){if(Q in J){P=M}M=null;G=null}else{if(M&&!I){P=M.valueOf().call(J)}if(M&&Q!==M.__key){M=D(M,Q)}if(G&&Q!==G.__key){G=C(G,Q)}}if(M){if(J.hasOwnProperty(N)){J[N]=M}else{K[N]=M}}if(G){if(J.hasOwnProperty(O)){J[O]=G}else{K[O]=G}}return{getter:M,mutator:G,validator:F,value:P}}if(DC.Support.Properties){return E}else{return A}})();DC.KVO.adapt=function(B){if(!B){throw new InvalidArgumentError("Can't adapt a null object")}var A;for(A in DC.KVO.prototype){if(A in B){continue}B[A]=DC.KVO.prototype[A]}if("keyDependencies" in B&&!("__dependentKeys" in B)){var C=B.keyDependencies;for(A in C){B.setKeysTriggerChangeNotificationsForDependentKey(C[A],A)}}return B};DC.KVO.adaptTree=function(C){DC.KVO.adapt(C);var B;var A;for(B in C){if(B in DC.KVO.keysToIgnore){continue}A=C[B];if(!A){continue}if(DC.typeOf(A) in DC.KVO.typesOfKeyValuesToIgnore){continue}DC.KVO.adaptTree(A)}return C};DC.KVO.__subclassCreated__=function(A){var D=A.superclass.prototype;var B=A.prototype;if(D.keyDependencies===B.keyDependencies){return }var E=B.keyDependencies||{};for(var C in E){B.setKeysTriggerChangeNotificationsForDependentKey(E[C],C)}};DC.Bindable=Class.create(DC.KVO,{constructor:function(A){this.bindings={};this.__parameters=A;this.__context=DC.dataModel},__createFactoryObjects:function(){var A=DC.dataModel;var C=this.__context;DC.dataModel=this.__context=this;var D;var B;for(D in this.__factories__){B=this[D];if(!B.__factoryFn__){continue}this[D]=B.call(this)}DC.dataModel=A;this.__context=C},exposedBindings:[],defaultPlaceholders:{},automaticallySetupBindings:true,__relativeSource:null,defaultPlaceholderForMarkerWithBinding:function(B,C){var A=this.defaultPlaceholders[C];if(!A){return null}return A[B]||null},__createObserverMethod:function(B,C){function A(E){if(DC.ChangeType.setting!==E.changeType){throw new InvalidArgumentError('Received invalid change type for synthesized binding observer (name="'+B+'" keyPath="'+C+'")')}var D=E.newValue;this.setValueForKey(E.newValue,B)}return A},bindNameToKeyPath:function(B,G,A){var D;var F;var E={};if(!this.bindings){this.bindings={}}D=this["observe"+B.titleCase()+"Change"]||this.__createObserverMethod(B,G);if(this.bindings[B]){this.bindings[B].unbind()}var C=this.__context;if("object"===typeof (G)){Object.extend(E,G);G=E.keypath}Object.extend(E,DC.Binding.bindingInfoFromString(G));if("transformValue" in E){E.transformer={transformValue:E.transformValue,reverseTransformedValue:E.reverseTransformedValue||null};delete E.transformValue;delete E.reverseTransformedValue}if("*."===E.keypath.substr(0,2)){if(A){C=A}else{C=new DC.KVO()}E.keypath=E.keypath.substr(2)}E.name=B;E.object=C;E.observer=this;E.observerFn=D;F=new DC.Binding(E);F.bind();this.bindings[B]=F},__postConstruct:function(){if(!this.automaticallySetupBindings){return }this.__initialising=true;this.__copyParameters(this.__parameters||{});this.setupBindings();this.updateBindings();this.createObservers();delete this.__initialising},__copyParameters:function(C){var D;var A;var B=DC.KVO.adaptTree;for(D in C){if(-1!==D.search(/Binding$/)){continue}A=C[D];if("object"===DC.typeOf(A)&&!("addObserverForKeyPath" in A)){B(A)}this[D]=A}this.__parameters=C},bindingInfoForName:function(A){if(!this.__parameters){return null}return this.__parameters[A+"Binding"]},__createAutoObserver:function(C,B){var A=DC.ChangeType.setting;return function(D){if(this.bindings[B]||A==D.changeType){return }C.apply(this,arguments)}},createObservers:function(){var E=this.exposedBindings;var A=E.length;var B;var D;var C;for(B=0;B<A;++B){C=E[B];D=this["observe"+C.titleCase()+"Change"];if(!D){continue}D=this.__createAutoObserver(D,C);this.addObserverForKeyPath(this,D,C,"__auto_observer__")}},setupBindings:function(){var D=this.exposedBindings;var B=D.length;var E;var A;var C;for(C=0;C<B;++C){A=D[C];E=this.bindingInfoForName(A);if(!E){continue}this.bindNameToKeyPath(A,E,this.__relativeSource)}},updateBindings:function(){var E=this.bindings;var D=this.exposedBindings;var B=D.length;var A;var C;for(C=0;C<B;++C){A=E[D[C]];if(!A){continue}A.update()}},unbind:function(){for(var A in this.bindings){this.bindings[A].unbind()}}});DC.Bindable.__subclassCreated__=function(C){var E=C.superclass.prototype;var D=C.prototype;if(D.hasOwnProperty("defaultPlaceholders")){var B=Object.clone(E.defaultPlaceholders);D.defaultPlaceholders=Object.extend(B,D.defaultPlaceholders)}if(E.exposedBindings===D.exposedBindings&&!D.maskedBindings){return }var A=(E.maskedBindings===D.maskedBindings)?{}:$S(D.maskedBindings);function F(H){return !(H in A)}var G=E.exposedBindings.filter(F);if(E.exposedBindings!==D.exposedBindings){G=G.concat(D.exposedBindings.filter(F))}D.exposedBindings=G};DC.SortDescriptor=Class.create({constructor:function(D,A,B){this.keyPath=D;this.ascending=A;this.comparisonFn=B||this.defaultCompare;var C=typeof (this.comparisonFn);if("string"!=C&&"function"!=C){throw new InvalidArgumentError("comparisonFn must be either the name of a method or a function reference")}},resolveComparisonFn:function(B){var A=this.comparisonFn;if("string"===typeof (A)){A=B[A]}if("function"!==typeof (A)){throw new TypeError("comparisonFn does not resolve to a function")}return A},compareObjects:function(C,B){if(!C.valueForKeyPath||!B.valueForKeyPath){throw new InvalidArgumentError("Objects are not Key Value compliant")}var E=C.valueForKeyPath(this.keyPath);var D=B.valueForKeyPath(this.keyPath);var A=this.resolveComparisonFn(E);return A.call(E,D)},defaultCompare:function(A){return DC.compareValues(this,A)},reversedSortDescriptor:function(){return new DC.SortDescriptor(this.keyPath,!this.ascending,this.comparisonFn)}});DC.ValueTransformer=Class.create({transformedValue:function(A){return A},reverseTransformedValue:function(A){return A},__factory__:function(){var B=Array.from(arguments);var A=this;function C(){}return function(){C.prototype=A.prototype;var D=new C();A.prototype.constructor.apply(D,B);return D}}});DC.ValueTransformer.__subclassCreated__=function(A){var C=DC.ValueTransformer.prototype;var B=A.prototype;if(C.reverseTransformedValue==B.reverseTransformedValue){A.prototype.reverseTransformedValue=null}};DC.transformer={};DC.transformerInstances={};DC.findTransformerWithName=function(transformerName){var valueTransformer=DC.transformerInstances[transformerName.toLowerCase()];if(valueTransformer){return valueTransformer}if(-1===transformerName.indexOf(".")){valueTransformer=DC.transformer[transformerName]}if(!valueTransformer){try{valueTransformer=eval(transformerName)}catch(e){}}if(!valueTransformer){throw new InvalidArgumentError("The transformerName argument does not specify a valid ValueTransformer: "+transformerName)}if("function"!==typeof (valueTransformer)){return valueTransformer}if(valueTransformer.__factoryFn__){valueTransformer=valueTransformer()}else{valueTransformer=new valueTransformer()}return valueTransformer};DC.registerTransformerWithName=function(B,A){if(!B.transformedValue){throw new InvalidArgumentError("The valueTransformer argument does not support the ValueTransformer method transformedValue")}A=A.toLowerCase();DC.transformerInstances[A]=B};DC.transformer.Not=Class.create(DC.ValueTransformer,{transformedValue:function(A){return(A?false:true)},reverseTransformedValue:function(A){return !!A}});DC.registerTransformerWithName(new DC.transformer.Not(),"not");DC.transformer.Boolean=Class.create(DC.ValueTransformer,{constructor:function(A,B){this.trueValue=A;this.falseValue=B},transformedValue:function(A){return(A==this.trueValue)},reverseTransformedValue:function(A){return(A?this.trueValue:this.falseValue)}});DC.transformer.Matches=Class.create(DC.ValueTransformer,{constructor:function(A){this.trueRegex=A},transformedValue:function(A){return this.trueRegex.test(A)}});DC.transformer.Generic=Class.create(DC.ValueTransformer,{constructor:function(A,B){this.modelValues=A;this.displayValues=B},transformedValue:function(B){var A=this.modelValues.indexOf(B);var C;if(-1==A){return C}else{return this.displayValues[A]}},reverseTransformedValue:function(B){var A=this.displayValues.indexOf(B);var C;if(-1==A){return C}else{return this.modelValues[A]}}});DC.transformer.Truncated=Class.create(DC.ValueTransformer,{constructor:function(A){this.max=A||50},ellipsis:String.fromCharCode(8230),transformedValue:function(C){if(!C&&0!==C){return C}C=""+C;var A=C.length;if(A<=this.max){return C}var B=this.max/2-2;return[C.substr(0,B),this.ellipsis,C.substr(A-B)].join(" ")}});DC.registerTransformerWithName(new DC.transformer.Truncated(50),"truncated");DC.transformer.StringsToObjects=Class.create(DC.ValueTransformer,{constructor:function(A){this.key=A||"string"},transformedValue:function(B){if(!B||!B.map){return B}function A(C){var D=new DC.KVO();D[this.key]=C;return D}return B.map(A,this)},reverseTransformedValue:function(B){if(!B||!B.map){return B}function A(C){return C[this.key]}return B.map(A,this)}});DC.registerTransformerWithName(new DC.transformer.StringsToObjects("string"),"StringsToObjects");DC.transformer.FirstObject=Class.create(DC.ValueTransformer,{transformedValue:function(A){if(DC.typeOf(A)=="array"){return A[0]}return A}});Object.extend(DC,{NoSelectionMarkerType:"noSelection",MultipleValuesMarkerType:"multipleValues",NullValueMarkerType:"nullValue"});DC.Binding=Class.create({constructor:function(A){Object.extend(this,A);if("string"===typeof (this.transformer)){this.transformer=DC.findTransformerWithName(this.transformer)}if("function"===typeof (this.transformer)){if(this.transformer.__factoryFn__){this.transformer=this.transformer()}else{this.transformer=new this.transformer()}}this.refresh()},bind:function(){this.object.addObserverForKeyPath(this,this.observeChangeForKeyPath,this.keypath)},unbind:function(){this.object.removeObserverForKeyPath(this,this.keypath)},refresh:function(){var A=this.object.valueForKeyPath(this.keypath);this.cachedOriginalValue=A;this.markerType=this.markerTypeFromValue(A);if(this.markerType){if((this.markerType+"Placeholder") in this){A=this[this.markerType+"Placeholder"]}else{A=this.observer.defaultPlaceholderForMarkerWithBinding(this.markerType,this.name)}}else{A=this.transformedValue(A)}this.cachedValue=A},transformedValue:function(A){if(!this.transformer){return A}return this.transformer.transformedValue(A)},validateProposedValue:function(B){if(this.transformer){if(!this.transformer.reverseTransformedValue){throw new Error("Can't validate a value when the transformer doesn't have a reverseTransformedValue method")}B=this.transformer.reverseTransformedValue(B)}var A=this.object.validateValueForKeyPath(B,this.keypath);if(A instanceof DC.Error){return A}return this.transformedValue(A)},setValue:function(A){if(this.cachedValue===A){return }this.markerType=this.markerTypeFromValue(A);this.cachedValue=A;if(this.transformer){if(!this.transformer.reverseTransformedValue){return }A=this.transformer.reverseTransformedValue(A)}this.cachedOriginalValue=A;var B=this.updating;this.updating=true;this.object.setValueForKeyPath(A,this.keypath);this.updating=B},mutable:function(){if(this.transformer&&!this.transformer.reverseTransformedValue){return false}var A=this.object.infoForKeyPath(this.keypath);return A&&A.mutable},value:function(){return this.cachedValue},update:function(){var B=this.value();var C=new DC.ChangeNotification(this.object,DC.ChangeType.setting,B);this.updating=true;try{this.observerFn.call(this.observer,C,this.keypath)}catch(A){console.error('Exception while bindng "'+this.name+'" to keypath "'+this.keypath+' ": '+A)}this.updating=false},observerFn:function(C,A,B){},markerTypeFromValue:function(A){if(null===A||"undefined"===typeof (A)||""===A){return DC.NullValueMarkerType}if(DC.Markers.MultipleValues===A){return DC.MultipleValuesMarkerType}if(DC.Markers.NoSelection===A){return DC.NoSelectionMarkerType}return null},placeholderValue:function(){var A;if((this.markerType+"Placeholder") in this){A=this[this.markerType+"Placeholder"]}else{A=this.observer.defaultPlaceholderForMarkerWithBinding(this.markerType,this.name)}if("function"===typeof (A)){A=A.call(this.object)}return A},observeChangeForKeyPath:function(G,A,B){if(this.updating&&G.newValue===this.cachedOriginalValue){return }this.cachedOriginalValue=G.newValue;var E=G.newValue;this.markerType=this.markerTypeFromValue(E);if(this.markerType){E=this.placeholderValue()}else{E=this.transformedValue(E)}var C=Object.clone(G);C.newValue=E;if(DC.ChangeType.setting===G.changeType){this.cachedValue=E}var F=this.updating;this.updating=true;try{this.observerFn.call(this.observer,C,A,B)}catch(D){console.error('Exception while bindng "'+this.name+'" to keypath "'+this.keypath+' ": '+D)}this.updating=F}});DC.Binding.bindingRegex=/^(.*?)(?:\((.*)\))?$/;DC.Binding.compoundRegex=/^\s*([^&|].*?)\s*(\&\&|\|\|)\s*(\S.+)\s*$/;DC.Binding.bindingInfoFromString=function(B){var A;var C;A=B.match(DC.Binding.bindingRegex);if(!A||A.length<3){throw new InvalidArgumentError("bindingString isn't in correct format")}var D={keypath:A[1]};if(A[2]){D.transformer=DC.findTransformerWithName(A[2])}return D};Class.extend(Array,{containsObject:function(A){return -1!==this.indexOf(A)},valueForKey:function(D){if(!D||0===D.length){throw new InvalidArgumentError("the key is empty")}if("@count"==D){return this.length}var E=new Array(this.length);var C;var A=this.length;var B;for(C=0;C<A;++C){B=this[C];E[C]=B?B.valueForKey(D):null}return E},setValueForKey:function(D,C){if(!C||0===C.length){throw new InvalidArgumentError("key is empty")}var B;var A=this.length;for(B=0;B<A;++B){this[B].setValueForKey(D,C)}},indexesOfObjects:function(E){var D;var B=E.length;var A=[];var C;for(D=0;D<B;++D){C=this.indexOf(E[D]);if(-1===C){continue}A.push(C)}return A},addObject:function(B){var A=this.length;var C=new DC.ChangeNotification(this,DC.ChangeType.insertion,[B],null,[A]);this.push(B);this.observeElementAtIndex(A);this.notifyObserversOfChangeForKeyPath(C,DC.KVO.kAllPropertiesKey)},addObjects:function(G){var B=G.length;var E=this.length;var C=[];var A=[];var F=new DC.ChangeNotification(this,DC.ChangeType.insertion,C,null,A);for(index=0;index<B;++index){var D=G[index];this.push(D);this.observeElementAtIndex(E);C.push(D);A.push(E++)}this.notifyObserversOfChangeForKeyPath(F,DC.KVO.kAllPropertiesKey)},insertObjectAtIndex:function(B,A){if(A<0||A>this.length){throw new RangeError("index must be within the bounds of the array")}var C=new DC.ChangeNotification(this,DC.ChangeType.insertion,[B],null,[A]);this.splice(A,0,B);this.observeElementAtIndex(A);this.notifyObserversOfChangeForKeyPath(C,DC.KVO.kAllPropertiesKey)},insertObjectsAtIndexes:function(E,C){if(E.length!==C.length){throw new InvalidArgumentError("length of objects and indexes parameters must be equal")}var A=E.length;var D;var B;for(D=0;D<A;++D){B=C[D];this.splice(B,0,E[D]);this.observeElementAtIndex(B)}var F=new DC.ChangeNotification(this,DC.ChangeType.insertion,E,null,C);this.notifyObserversOfChangeForKeyPath(F,DC.KVO.kAllPropertiesKey)},replaceObjectAtIndex:function(C,B){var A=this[B];this[B]=C;var D=new DC.ChangeNotification(this,DC.ChangeType.replacement,[C],[A],[B]);this.notifyObserversOfChangeForKeyPath(D,DC.KVO.kAllPropertiesKey)},replaceObjectsAtIndexes:function(F,D){var B=[];var A=F.length;var E;var C;for(E=0;E<A;++E){C=D[E];B[E]=this[C];this.stopObservingElementAtIndex(C);this[C]=F[E];this.observeElementAtIndex(C)}var G=new DC.ChangeNotification(this,DC.ChangeType.replacement,F,null,D);this.notifyObserversOfChangeForKeyPath(G,DC.KVO.kAllPropertiesKey)},removeObject:function(B){var A=this.indexOf(B);if(-1===A){return }this.removeObjectAtIndex(A)},removeObjects:function(D){var A=D.length;var B;for(var C=0;C<A;++C){B=this.indexOf(D[C]);if(-1===B){continue}this.removeObjectAtIndex(B)}},removeObjectsAtIndexes:function(D){var C;var E=D.sort(function(I,H){return H-I});var A=D.length;var B=[];for(C=0;C<A;++C){var F=E[C];this.stopObservingElementAtIndex(F);B.push(this[F]);this.splice(F,1)}var G=new DC.ChangeNotification(this,DC.ChangeType.deletion,null,B,E);this.notifyObserversOfChangeForKeyPath(G,DC.KVO.kAllPropertiesKey)},removeObjectAtIndex:function(B){if(B<0||B>=this.length){throw new RangeError("index must be within the bounds of the array")}this.stopObservingElementAtIndex(B);var A=this.splice(B,1);var C=new DC.ChangeNotification(this,DC.ChangeType.deletion,null,A,[B]);this.notifyObserversOfChangeForKeyPath(C,DC.KVO.kAllPropertiesKey)},removeAllObjects:function(){var D;var C=[];var A=this.length;C.length=A;for(D=0;D<A;++D){this.stopObservingElementAtIndex(D);C[D]=D}var B=this.splice(0,A);var E=new DC.ChangeNotification(this,DC.ChangeType.deletion,null,B,C);this.notifyObserversOfChangeForKeyPath(E,DC.KVO.kAllPropertiesKey)},objectsAtIndexes:function(C){var D;var B=[];var A=C.length;B.length=C.length;for(D=0;D<A;++D){B[D]=this[C[D]]}return B},observeChildObjectChangeForKeyPath:function(F,E,B){var D=F.object;var C=this.indexOf(D);if(!this.__uid){this.initialiseKeyValueObserving()}if(-1===C){D._removeParentLink(this,null,this.__uid);return }var A=new DC.ChangeNotification(D,DC.ChangeType.replacement,[F.newValue],[F.oldValue],[C]);this.notifyObserversOfChangeForKeyPath(A,E)},observeElementAtIndex:function(A){var B=this[A];if(!B||!B._addParentLink){return }if(!this.__uid){this.initialiseKeyValueObserving()}B._addParentLink(this,null,this.__uid)},stopObservingElementAtIndex:function(A){var B=this[A];if(!B||!B._removeParentLink){return }if(!this.__uid){this.initialiseKeyValueObserving()}B._removeParentLink(this,null,this.__uid)},initialiseKeyValueObserving:function(){var B;var A=this.length;this.__observers={};this.__uid=this.__uid||DC.generateUid();for(B=0;B<A;++B){this.observeElementAtIndex(B)}}});DC.KVO.adapt(Array.prototype);DC.ArrayOperator={avg:function(A){return this.sum(A)/A.length},count:function(A){throw new InvalidArgumentError("@count operator must end the keyPath")},distinctUnionOfArrays:function(A){return this.unionOfArrays(A).distinct()},distinctUnionOfObjects:function(A){return A.distinct()},max:function(D){var B=null;var E;var A;var C;for(E=0,A=D.length;E<A;++E){C=D[E];if(null===B||C>B){B=C}}return B},min:function(C){var E=null;var D;var A;var B;for(D=0,A=C.length;D<A;++D){B=C[D];if(null===E||B<E){E=B}}return E},sum:function(B){var D=0;var A=B.length;var C;for(C=0;C<A;++C){D+=B[C]}return D},unionOfArrays:function(B){var D=[];var A;var C;for(C=0,A=B.length;C<A;++C){D=D.concat(B[C])}return D},unionOfObjects:function(A){return A}};Object.extend(DC,{dataModel:new DC.KVO(),registerModelWithName:function(B,A){DC.dataModel.setValueForKey(B,A)},unregisterModelWithName:function(A){delete DC.dataModel[A]}});String.prototype.titleCase=function(){return this.charAt(0).toUpperCase()+this.substr(1)};String.prototype.trim=function(){var B=this.replace(/^\s+/,"");for(var A=B.length-1;A>0;--A){if(/\S/.test(B.charAt(A))){B=B.substring(0,A+1);break}}return B};String.prototype.beginsWith=function(A){return A===this.substring(0,A.length)};if(!String.prototype.localeCompare){String.prototype.localeCompare=function(A){if(this<A){return -1}else{if(this>A){return 1}else{return 0}}}}String.prototype.expand=function(C,A){function B(F,D){var E=C[D];if(null===E||"undefined"===typeof (E)){return A}return E}return this.replace(/\$\{(\w+)\}/g,B)};var CancelledError=DC.defineError("CancelledError");var InvalidStateError=DC.defineError("InvalidStateError");(function(){var C=-1;var A=0;var B=1;DC.Deferred=Class.create({constructor:function(D){this.canceller=D;this._result=null;this._status=C;this._callbacks=[]},_fire:function(D){while(this._callbacks.length){this._status=(D instanceof Error)?B:A;this._result=D;var E=this._callbacks.shift()[this._status];if(!E){continue}D=E(D);if(D instanceof DC.Deferred){var F=this;function G(H){F._fire(H);return H}D.addMethods(G,G);return }}this._status=(D instanceof Error)?B:A;this._result=D},result:function(){return this._result},cancel:function(){if(C!==this._status){throw new InvalidStateError("Can not cancel Deferred because it is already complete")}var D=(this.canceller&&this.canceller());if(!(D instanceof Error)){D=new CancelledError("Deferred operation cancelled")}this.failure(D)},addMethods:function(D,E){this._callbacks.push([D,E]);if(C===this._status){return this}this._fire(this._result);return this},addCallback:function(D){return this.addMethods(D,null)},addErrorHandler:function(D){return this.addMethods(null,D)},callback:function(D){if(C!==this._status){throw new InvalidStateError("Can not signal callback because Deferred is already complete: result="+D)}this._fire(D)},failure:function(D){if(C!==this._status){throw new InvalidStateError("Can not signal failure because Deferred is already complete: error="+D)}this._fire(D)}})})();window.XHR=(function(){var getTransport=function(){throw new Error("XMLHttpRequest not available.")};if(!DC.Browser.IE){getTransport=function(){return new XMLHttpRequest()}}else{var progIdCandidates=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];var len=progIdCandidates.length;var progId;var xhr;for(var i=0;i<len;++i){try{progId=progIdCandidates[i];xhr=new ActiveXObject(progId);getTransport=function(){return new ActiveXObject(progId)};break}catch(e){}}}function send(url,method,options){var timeout;function noop(){}function cancel(){xhr.onreadystatechange=noop;xhr.abort()}function readyStateChanged(xhrEvent){if(4!==xhr.readyState){return }if(timeout){clearTimeout(timeout)}if(xhrSent===false){arguments.callee.delay(0);return }var status=xhr.status;var succeeded=(status>=200&&status<300)||304==status;if(0===status||"undefined"===typeof (status)){var protocol=window.location.protocol;succeeded="file:"===protocol||"chrome:"===protocol}var result=xhr.responseText;var err;if(succeeded){if("HEAD"==method){result={};try{var headers=xhr.getAllResponseHeaders();if(headers){headers=headers.split("\n");headers.forEach(function(header){var match=header.match(/^([^:]+):(.+)$/m);var name=match[1].trim();result[name]=match[2].trim()})}}catch(e){}}else{var contentType=options.responseContentType||xhr.getResponseHeader("Content-Type");if(contentType.match(/(?:application\/(?:x-)?json)|(?:text\/json)/)){try{result=eval("("+result+")")}catch(e){err=e;succeeded=false}}if(contentType.match(/(?:application|text)\/xml/)){result=xhr.responseXML}}}else{err=new Error("XHR request failed");err.url=url;err.method=method;err.xhr=xhr;err.status=xhr.status;err.statusText="Failed to load resource."}if(succeeded){deferred.callback(result)}else{deferred.failure(err)}xhr.onreadystatechange=noop;xhr=null}var xhr=getTransport();var queryString=Object.toQueryString(options.parameters||{});var body=options.body||"";var async=!options.sync;var deferred=new DC.Deferred(cancel);var xhrSent=false;method=(method||"GET").toUpperCase();try{if("GET"==method){if(queryString&&-1===url.indexOf("?")){url=url+"?"+queryString}else{if(queryString&&-1!==url.indexOf("?")){url=url+"&"+queryString}else{if("&"===url.slice(-1)){url=url+queryString}else{url=url+queryString}}}}if(options.responseContentType&&xhr.overrideMimeType){xhr.overrideMimeType(options.responseContentType)}if(options.user){xhr.open(method,url,async,options.user,options.password||"")}else{xhr.open(method,url,async)}var headers=options.headers||{};for(var h in headers){xhr.setRequestHeader(h,headers[h])}if("POST"==method){xhr.setRequestHeader("Content-Type",options.contentType||"application/x-www-form-urlencoded");body=queryString}if(async){xhr.onreadystatechange=readyStateChanged;timeout=setTimeout(function(){xhr.abort()},30000)}xhr.send(body);xhrSent=true;if(!async){readyStateChanged()}}catch(e){var err=new Error("XHR request failed");err.url=url;err.method=method;err.xhr=xhr;err.status=-1;err.statusText="Failed to load resource.";deferred.failure(err)}return deferred}return{get:function(url,parameters,options){return XHR.request("GET",url,parameters,options)},post:function(url,parameters,options){return XHR.request("POST",url,parameters,options)},request:function(method,url,parameters,options){method=method.toUpperCase();options=options||{};options.parameters=parameters;return send(url,method,options)}}})();DC.Controller=Class.create(DC.Bindable,{constructor:function(A){this.base(A)},registerWithName:function(A){if(!A){return }this.name=A;DC.registerModelWithName(this,A)}});DC.Markers={MultipleValues:"ThisIsAnUniqueStringThatRepresentsMultipleValues",NoSelection:"ThisIsAnUniqueStringThatRepresentsNoSelection"};DC.SelectionProxy=Class.create(DC.KVO,{constructor:function(A){this.controller=A;this.mutable=true},infoForKey:function(B){var A=this.controller.selectedObjects();var C=A.infoForKey(B);C.mutable&=this.mutable;return C},infoForKeyPath:function(C){var A=this.controller.selectedObjects();var B=A.infoForKeyPath(C);B.mutable&=this.mutable;return B},translateValue:function(D){if("array"!==DC.typeOf(D)){return D}if(1===D.length){return D[0]}var C;var A;var B=D[0];for(C=1,A=D.length;C<A;++C){if(0!==DC.compareValues(B,D[C])){return DC.Markers.MultipleValues}}return B},valueForKey:function(C){var B=this.controller.selectedObjects();if(0===B.length){return DC.Markers.NoSelection}var A=B.valueForKey(C);return this.translateValue(A)},validateValueForKeyPath:function(E,F){var B=this.controller.selectedObjects();var A=B.length;var D;if(0===A){return E}var C;for(D=0;D<A;++D){C=B[D].validateValueForKeyPath(E,F);if(C instanceof DC.Error){return C}}return C},valueForKeyPath:function(C){var B=this.controller.selectedObjects();if(0===B.length){return DC.Markers.NoSelection}var A=B.valueForKeyPath(C);return this.translateValue(A)},setValueForKey:function(D,C){if(!this.mutable){return }var B=this.controller.selectedObjects();var A=this.valueForKey(C);B.setValueForKey(D,C);var E=this.valueForKey(C);if(A===E){return }var F=new DC.ChangeNotification(this,DC.ChangeType.setting,E,A);this.notifyObserversOfChangeForKeyPath(F,C)},setValueForKeyPath:function(C,F){if(!this.mutable){return }var B=this.controller.selectedObjects();var A=this.valueForKeyPath(F);B.setValueForKeyPath(C,F);var D=this.valueForKeyPath(F);if(A===D){return }var E=new DC.ChangeNotification(this,DC.ChangeType.setting,D,A);this.notifyObserversOfChangeForKeyPath(E,F)}});DC.ObjectController=Class.create(DC.Controller,{constructor:function(A){this.base(A);this.objectClass=DC.KVO;this.__content=null;this.__editable=true;this.__selectedObjects=[];this.__selection=new DC.SelectionProxy(this)},observeChildObjectChangeForKeyPath:function(F,E,B){this.base(F,E,B);if("selectedObjects"!==B){return }var C="selection."+E;var D=this.valueForKeyPath(C);var A=new DC.ChangeNotification(this,DC.ChangeType.setting,D,null);this.notifyObserversOfChangeForKeyPath(A,C)},keyDependencies:{},exposedBindings:["editable","content"],editable:function(){var A=this.__editable;if(this.bindings.content){A&=this.bindings.content.mutable()}return A},setEditable:function(A){if(this.bindings.content){A&=this.bindings.content.mutable()}if(this.bindings.editable){this.bingings.editable.setValue(A)}this.__editable=A},content:function(){return this.__content},setContent:function(A){if(this.bindings.content){this.bindings.content.setValue(A)}this.__content=A;this.willChangeValueForKey("selectedObjects");if(!A){this.__selectedObjects=[]}else{this.__selectedObjects=[A]}this.didChangeValueForKey("selectedObjects");this.forceChangeNotificationForKey("selection")},selectedObjects:function(){return this.__selectedObjects},selection:function(){return this.__selection}});DC.AjaxController=Class.create(DC.ObjectController,{flushContentBeforeQuery:false,fetchesInitially:true,constructor:function(A){this.queryDelay=0;this.url="";this.method="GET";this.base(A);if(this.parameters){DC.KVO.adaptTree(this.parameters)}else{this.parameters=new DC.KVO()}this.addObserverForKeyPath(this,this.queryUpdated,"url");this.addObserverForKeyPath(this,this.queryUpdated,"method")},__postConstruct:function(){this.base();if(this.fetchesInitially&&this.url&&this.url.length&&this.validateParameters()){this.forceChangeNotificationForKey("url")}},validateParameters:function(){return true},fullURL:function(){var H={};var E=this.parameters.mutableKeys();var A=E.length;var B=this.url;var D;var G;for(var C=0;C<A;++C){G=E[C];if(this.parameters.hasOwnProperty(G)){H[G]=this.parameters[G]}}D=Object.toQueryString(H);if(D){var F=B.indexOf("?");if(F!=(B.length-1)){B+="?"}B+=D}return B},observeChildObjectChangeForKeyPath:function(C,B,A){this.base(C,B,A);if("parameters"===A){this.queryUpdated(C,B,A)}},queryUpdated:function(C,B,A){if(!this.parameters||!this.validateParameters()){return }this.setValueForKey(true,"queryInProgress");if(this.__queryTimer){window.clearTimeout(this.__queryTimer)}this.__queryTimer=this.performQuery.bindAndDelay(this,this.queryDelay)},performQuery:function(){var F={};var E=this.parameters.mutableKeys();var A=E.length;var G;var C;var B="application/json";for(var D=0;D<A;++D){G=E[D];if(!this.parameters.hasOwnProperty(G)){continue}C=this.parameters[G];if(null===C||"undefined"===typeof (C)){continue}F[G]=C}if(this.dataModel&&("xml"==this.dataModel.dataType)){B="text/xml"}this.__request=XHR.get(this.url,F,{responseContentType:B});this.__request.addMethods(this.querySucceeded.bind(this),this.queryFailed.bind(this));if(this.flushContentBeforeQuery){this.setContent(null)}},extractContent:function(A){return A},querySucceeded:function(A){var E=null;var C="json";if(this.dataModel){if("xml"==this.dataModel.dataType){C="xml"}}if(C=="json"){DC.KVO.adaptTree(A);E=A}else{if(C=="xml"&&A){if(this.dataModel.model){var B=this.dataModel.model;var D=A;for(var F=D.firstChild;F!=null;F=F.nextSibling){if((F.nodeType==1)){D=F;break}}if(B&&D){E=new DC.ModeledXMLProxy(A,D,B)}}}}if(!E){err=new Error("XHR request failed");err.url=this.url;err.method=this.method;err.status=400;err.statusText="Invalid feed.";this.queryFailed(err);return }this.setContent(this.extractContent(E));this.setValueForKey("","statusCode");this.setValueForKey("","errorMessage");this.setValueForKey(false,"queryInProgress")},queryFailed:function(A){this.setValueForKey(-1,"statusCode");this.setValueForKey(A.statusText,"errorMessage");this.setContent(null);this.setValueForKey(false,"queryInProgress")}});DC.ModeledXMLProxy=Class.create(DC.KVO,{_xmlRoot:null,_xmlNode:null,constructor:function(A,C,B){this._xmlRoot=A;this._xmlNode=C;this._xmlModel=B;this._valueCache={};if(B){if(DC.typeOf(B)=="array"){this._xmlModel=B[0]}}},_typeOfChild:function(A){var B="string";var C=false;if(!this._xmlModel){return null}model=this._xmlModel[A];if(model==undefined){if(A!="#content"){return{type:"string",toMany:false}}else{return null}}B=DC.typeOf(model);if(B=="array"){C=true;B=DC.typeOf(model[0])}if(B=="string"&&model=="xhtml"){B="xhtml"}return{type:B,toMany:C}},_valueOfNode:function(C,B){var A=null;var D=null;if(B=="object"){return new DC.ModeledXMLProxy(self._xmlRoot,C,model)}for(var E=C.firstChild;E!=null;E=E.nextSibling){if(B=="xhtml"){if(E.nodeType==1&&(E.namespaceURI==DC.ModeledXMLProxy.NS_XHTML)){return E.outerHTML||E.xml||E.innerHTML}}else{if((E.nodeType==3)||(E.nodeType==4)){if(!(/[^\t\n\r ]/.test(E.data))){continue}A=E.data}}}if(A){if(B=="boolean"){if(A=="true"||A=="YES"){D=true}else{if(A=="false"||A=="NO"){D=false}}}else{if(B=="number"){D=Number(A);if(D==NaN){D=A}}else{D=A}}}return D},_valueOfChild:function(H){var I=this;var E=null;var F=null;var C=false;var B=function(M,L){var K=new Array();for(var N=M.firstChild;N!=null;N=N.nextSibling){var J=N.nodeName;if(J==L){K.push(N)}}return K.length?K:undefined};var D=this._typeOfChild(H);if(!D){return null}F=D.type;C=D.toMany;if(H=="#content"){return this._valueOfNode(this._xmlNode,F)}var A=B(this._xmlNode,H);var G=null;if(C){G=new Array();if(A){A.forEach(function(J){G.push(I._valueOfNode(J,F))})}}else{if(A&&A.length){G=this._valueOfNode(A[0],F)}}return G},_rawValueForKey:function(A){var B=null;if(0==A.indexOf("$")){B=this._xmlNode.getAttribute(A.substr(1))}else{if(0==A.indexOf("#")){B=this._valueOfChild(A)}else{B=this._valueOfChild(A)}}return B},toString:function(){if(this._typeOfChild("#content")){return this.valueForKey("#content")}return"OBJECT"},valueForKey:function(A){var B=this._valueCache[A];if(!A||0===A.length){throw new InvalidArgumentError("the key is empty")}if(undefined===B){var C;if(!this.__keys){this.__keys={}}this.__keys[A]=C=new DC.ModeledXMLKeyInfo(this,A);B=C.get(this)}if(!this._valueAccessedViaKeyPath&&B&&(B instanceof DC.ModeledXMLProxy)){if(B._typeOfChild("#content")){return B.valueForKey("#content")}}return B},valueForKeyPath:function(C){if(!C||0===C.length){throw new InvalidArgumentError("keyPath may not be empty")}if("string"==typeof (C)){C=C.split(".")}this._valueAccessedViaKeyPath=true;var A=C[0];var B=this.base(C);delete this._valueAccessedViaKeyPath;if(1==C.length&&B){if(B instanceof DC.ModeledXMLProxy){if(B._typeOfChild("#content")){return B.valueForKey("#content")}}}return B}});DC.ModeledXMLProxy.NS_XHTML="http://www.w3.org/1999/xhtml";DC.ModeledXMLKeyInfo=Class.create(DC.KeyInfo,{constructor:function(D,C){var A=DC.KVO.getPropertyMethodsForKeyOnObject;var B=D._rawValueForKey(C);DC.KVO.getPropertyMethodsForKeyOnObject=function(E,F){return{value:B,getter:function(){return this._valueCache[E]},mutator:function(G){this.willChangeValueForKey(E);this._valueCache[E]=G;this.didChangeValueForKey(E)}}};this.base(D,C);D._valueCache[this.key]=B;DC.KVO.getPropertyMethodsForKeyOnObject=A}});(function(){var A=this.Element;this.Element={};Object.extend(this.Element,A||{})}).call(window);Object.extend(Element,{uniqueId:function(){return"DC_id_"+Element.assignId.uniqueId++},assignId:function(A){return A.id||(A.id=("DC_id_"+Element.assignId.uniqueId++))},regexForClassName:function(B){var A=arguments.callee;if(!A._lookup){A._lookup={}}if(B in A._lookup){return A._lookup[B]}return(A._lookup[B]=new RegExp("(^|\\s)"+B+"(\\s|$)"))},hasClassName:function(A,B){var C=A.className;if(!C){return false}if(C==B){return true}return Element.regexForClassName(B).test(C)},addClassName:function(A,B){if(!B){return }if(Element.hasClassName(A,B)){return }A.className+=" "+B},removeClassName:function(A,B){if(!A||!B){return }var C=Element.regexForClassName(B);A.className=A.className.replace(C," ").trim()},replaceClassName:function(B,C,A){if(!C){return }if(!A){Element.removeClassName(B,C);return }var D=Element.regexForClassName(C);B.className=B.className.replace(D,"$1"+A+"$2").trim()},toggleClassName:function(A,B){if(!B){return }var C=Element.regexForClassName(B);var D=A.className;if(C.test(D)){A.className=D.replace(C," ").trim()}else{A.className+=" "+B}},updateClass:function(F,G,C){var E=$S(F.className.split(" "));var H=Set.add;var B=Set.remove;var D;var A;if("string"===typeof (G)){H(E,G)}else{for(D=0,A=G.length;D<A;++D){H(E,G[D])}}if("string"===typeof (C)){B(E,C)}else{for(D=0,A=C.length;D<A;++D){B(E,C[D])}}F.className=Set.join(E," ")},PROPERTIES:["backgroundColor","backgroundPosition","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","color","display","fontSize","letterSpacing","lineHeight","opacity","width","height","top","bottom","left","right","marginTop","marginRight","marginBottom","marginLeft","paddingTop","paddingRight","paddingBottom","paddingLeft"],getStyles:function(E,D){var F={};var B=window.getComputedStyle(E,null);if("string"===typeof (D)){return E.style[D]||B[D]||null}D=D||Element.PROPERTIES;var G;var A=D.length;for(var C=0;C<A;++C){G=D[C];F[G]=E.style[G]||B[G]||null}return F},setStyle:function(A,B,C){A.style[B]=C},setStyles:function(A,B){var C=A.style;for(var D in B){C[D]=B[D]}},getDimensions:function(E){var G=Element.getStyle(E,"display");if(G&&G!="none"){return{left:E.offsetLeft,top:E.offsetTop,width:E.offsetWidth,height:E.offsetHeight}}var B=E.style;var F=B.visibility;var C=B.position;var A=B.display;B.visibility="hidden";B.position="absolute";B.display="block";var D={width:E.offsetWidth,height:E.offsetHeight,left:E.offsetLeft,top:E.offsetTop};B.display=A;B.position=C;B.visibility=F;return D},set3PiecesBorderImage:function(G,B,E,J){if(DC.Support.BorderImage){G.style.borderWidth=B?"0px "+J+"px 0px "+E+"px ":"0px";var K=B?"url("+B+") 0 "+J+" 0 "+E+" repeat stretch":"";G.style.webkitBorderImage=K;G.style.MozBorderImage=K}else{if(!B){G.innerHTML="";return }var A=document.createElement("div");var F=A.style;F.position="absolute";F.top="0px";F.bottom="0px";var L=A.cloneNode(false);L.style.left="0px";L.style.right="0px";var C=A.cloneNode(false);var D=C.style;D.backgroundImage="url("+B+")";D.backgroundRepeat="no-repeat";var H=C.cloneNode(false);var I=H.style;D.left="0px";D.width=E+"px";I.right="0px";I.width=J+"px";I.backgroundPosition="100% 0px";F.left=E+"px";F.right=J+"px";F.backgroundImage="url("+B.replace(/.png/,"__mid.png")+")";F.backgroundRepeat="repeat-x";if(G.firstChild){G.insertBefore(L,G.firstChild)}else{G.appendChild(L)}L.appendChild(C);L.appendChild(A);L.appendChild(H)}},clone:function(A){return A.cloneNode(true)},depthFirstTraversal:function(D,E,C){if(!D||!E){return }var A=D.nextSibling||D.parentNode;var B;C=C||E;while(D!==A){if(1===D.nodeType){B=E.call(C,D);if(false!==B&&D.firstChild){D=D.firstChild;continue}}while(!D.nextSibling){D=D.parentNode;if(D===A){return }}D=D.nextSibling}},query:function(B,A){if(1==arguments.length){A=B;B=document}else{if(B!=document){A="#"+Element.assignId(B)+" "+A}}return B.querySelector(A)},queryAll:function(B,A){if(1==arguments.length){A=B;B=document}else{if(B!=document){A="#"+Element.assignId(B)+" "+A}}return Array.from(B.querySelectorAll(A))},match:function(B,A){return Sizzle.matches(A,[B]).length==1},getViewport:function(){var B=document.documentElement;var A=document.body;return{left:window.scrollLeft||B.scrollLeft||A.scrollLeft,top:window.scrollTop||B.scrollTop||A.scrollTop,width:window.innerWidth||B.clientWidth||A.clientWidth,height:window.innerHeight|B.clientHeight||A.clientHeight}},scrollParent:function(F){var E;var C=Element.getStyles;var A=document.body;while(F&&F!=A){E=C(F,["overflow","overflowX","overflowY"]);for(var B in E){var D=E[B];if("auto"==D||"scroll"==D){return F}}F=F.parentNode}return F},getRect:function(P,N){if(!P){return null}var R=document.documentElement;var M=document.body;var D=0;var O=0;if(P!=document.body&&P.getBoundingClientRect){var L=P.getBoundingClientRect();L={left:L.left,right:L.right,top:L.top,bottom:L.bottom};if(!!N===false){L.left+=Math.max(R.scrollLeft,M.scrollLeft);L.right+=Math.max(R.scrollLeft,M.scrollLeft);L.top+=Math.max(R.scrollTop,M.scrollTop);L.bottom+=Math.max(R.scrollTop,M.scrollTop)}L.left-=R.clientLeft;L.right-=R.clientLeft;L.top-=R.clientTop;L.bottom-=R.clientTop;L.width=L.right-L.left+1;L.height=L.bottom-L.top+1;return L}var J=P.parentNode;var F=P;var A=P.offsetParent;var K=DC.Browser.Mozilla;var Q=DC.Browser.Safari&&!DC.Browser.Safari2;var B=DC.Browser.Safari2;var H=Element.getStyles;var G=Element.getDimensions(P);var C=("fixed"===Element.getStyles(P,"position"));var I;D+=P.offsetLeft;O+=P.offsetTop;while(!C&&A){D+=A.offsetLeft;O+=A.offsetTop;if(K&&!((/^t(able|d|h)$/i).test(A.tagName))||Q){I=H(A,["borderLeftWidth","borderTopWidth"]);D+=parseInt(I.borderLeftWidth||0,10);O+=parseInt(I.borderTopWidth||0,10)}if(!C){C=("fixed"===H(A,"position"))}if("BODY"!==A.tagName){F=A}A=A.offsetParent}var E=K?["display","overflow","borderLeftWidth","borderTopWidth"]:["display"];while(J&&J.tagName&&"BODY"!==J.tagName&&"HTML"!==J.tagName){I=H(J,E);if(!((/^inline|table.*$/i).test(I.display))){D-=J.scrollLeft;O-=J.scrollTop}if(K&&"visible"!=I.overflow){D+=parseInt(I.borderLeftWidth||0,10);O+=parseInt(I.borderTopWidth||0,10)}J=J.parentNode}var S=H(F,"position");if((B&&(C||S=="absolute"))||(K&&S!="absolute")){D-=M.offsetLeft;O-=M.offsetTop}if(N===true&&!C){D-=Math.max(R.scrollLeft,M.scrollLeft);O-=Math.max(R.scrollTop,M.scrollTop)}return{left:D,top:O,right:D+G.width-1,bottom:O+G.height-1,width:G.width,height:G.height}}});Element.getStyle=Element.getStyles;Element.assignId.uniqueId=1;if(!DC.Support.QuerySelector){Object.extend(Element,{query:function(B,A){if(1==arguments.length){A=B;B=document}return(Sizzle(A,B)[0]||null)},queryAll:function(B,A){if(1==arguments.length){A=B;B=document}return(Sizzle(A,B)||null)}})}if("undefined"===typeof (document.documentElement.children)){HTMLElement.prototype.__defineGetter__("children",function(){var B=[];var A=this.childNodes.length;var D;for(var C=0;C<A;++C){D=this.childNodes[C];if(Node.ELEMENT_NODE!==D.nodeType){continue}B.push(D)}return B})}if("undefined"===typeof (document.documentElement.innerText)){HTMLElement.prototype.__defineGetter__("innerText",function(){return this.textContent});HTMLElement.prototype.__defineSetter__("innerText",function(A){this.textContent=A})};(function(){var A=this.Event;this.Event={};Object.extend(this.Event,A||{})}).call(window);Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,_domHasFinishedLoading:function(){if(arguments.callee.done){return }arguments.callee.done=true;if(this._domLoadedTimer){window.clearInterval(this._domLoadedTimer)}var C=Event._readyCallbacks;var A=C.length;var B;for(B=0;B<A;++B){C[B]()}Event._readyCallbacks=null},observe:function(C,A,B){if("on"==A.slice(0,2)){A=A.slice(2)}C.addEventListener(A,B,false)},stopObserving:function(C,A,B){if("on"==A.slice(0,2)){A=A.slice(2)}C.removeEventListener(A,B,false)},stop:function(A){A.preventDefault();A.stopPropagation()},preventDefault:function(A){A.preventDefault()},onDomReady:function(A){if(Event._domHasFinishedLoading.done){window.setTimeout(A,0);return }if(!Event._readyCallbacks){document.addEventListener("DOMContentLoaded",Event._domHasFinishedLoading,false);function B(){if((/loaded|complete/).test(document.readyState)){Event._domHasFinishedLoading()}}if(DC.Browser.Safari){Event._domLoadedTimer=window.setInterval(B,10)}Event.observe(window,"load",Event._domHasFinishedLoading);Event._readyCallbacks=[]}Event._readyCallbacks.push(A)}});DC.PartFinder=(function(){function C(G,E){var H=G.length;var D=Array.from(E);function I(){G=[];D=null;H=0}function M(P){G.splice(P,1);if(D){D.splice(P,1)}H=G.length}function F(P){var R=Element.assignId(P);var Q=G.indexOf(R);if(-1==Q){return }G.splice(Q,1);if(D){D.splice(Q,1)}H=G.length}function O(R,Q){var P=Element.assignId(R);G.splice(Q,0,P);if(D){D.splice(Q,0,R)}H=G.length}function N(P){G.push(Element.assignId(P));H=G.length;if(D){D.push(P)}}function K(){D=null}function J(){var R=[];var P;for(var Q=0;Q<H;++Q){P=document.getElementById(G[Q]);if(!P){continue}R.push(G[Q])}G=R;H=R.length;D=null}function L(R){if(D){if(1==arguments.length){return D[R]}return D}if(1==arguments.length){return document.getElementById(G[R])}var P=[];for(var Q=0;Q<H;++Q){P[Q]=document.getElementById(G[Q])}D=P;window.setTimeout(K,250);return P}if(E){window.setTimeout(K,250)}L.removePartAtIndex=M;L.removePart=F;L.insertPartAtIndex=O;L.add=N;L.removeAll=I;L.refresh=J;return L}function A(G,E){var D=E;function F(){D=null}function H(){if(D){return D}D=document.getElementById(G);window.setTimeout(F,250);return D}return H}function B(E,D){var F=Element.queryAll(E,D);var G=Array.map(F,Element.assignId);return{nodes:F,ids:G}}return{singlePart:function(E,D){function F(){var K=D;var G=typeof (K);if("function"===G){K=K()}else{if("string"===G){K=document.getElementById(K)}else{if(!K){K=this.viewElement()}}}var H=B(K,E);var J=A(H.ids[0],H.nodes[0]);var I=Class.findPropertyName(this,arguments.callee);if(I){this[I]=J}return H.nodes[0]}return F},multipleParts:function(E,D){function F(I){var L=D;var G=typeof (L);if("function"===G){L=L()}else{if("string"===G){L=document.getElementById(L)}else{if(!L){L=this.viewElement()}}}var H=B(L,E);var K=C(H.ids,H.nodes);var J=Class.findPropertyName(this,arguments.callee);if(J){this[J]=K}if(arguments.length){return H.nodes[I]}else{return Array.from(H.nodes)}}return F}}})();var Part=DC.PartFinder.singlePart;var PartList=DC.PartFinder.multipleParts;DC.Style={kSelectedClass:"selected",kDisabledClass:"disabled",kReadOnlyClass:"read-only",kMarkerClass:"nullValue",kFocusClass:"focused",kHoverClass:"hover",kAscendingClass:"asc",kDescendingClass:"desc",kActiveClass:"active",kUpdatingClass:"updating",kFadingClass:"invisible",kInvalidValueClass:"invalid",kInsertedClass:"inserted",kDeletedClass:"deleted",kReplacingClass:"replacing",kLoadingClass:"loading",kFirstClass:"first",kLastClass:"last"};DC.Style.__styles=(function(){var A=[];var B=DC.Style;for(var C in B){A.push(B[C])}return A})();window.FIRST_RESPONDER="__first_responder__";DC.Responder=Class.create(DC.Bindable,{sendActionToView:function(B,A){if(FIRST_RESPONDER===A){A=DC.page.firstResponder}var C=A||DC.page.firstResponder||this;while(C){if(B in C){C[B](this);return true}C=C.nextResponder()}return false},acceptsFirstResponder:function(){return false},becomeFirstResponder:function(){return true},resignFirstResponder:function(){return true},nextResponder:function(){return this.__nextResponder||null},setNextResponder:function(A){this.__nextResponder=A},presentError:function(B){this.willPresentError(B);if(!("field" in B)){B.field=this}var A=this.nextResponder();if(A){return A.presentError(B)}return false},clearAllErrors:function(B){var A=this.nextResponder();if(A){A.clearAllErrors(B||this)}},willPresentError:function(A){},onmousedown:function(A){var B=this.nextResponder();if(B){B.onmousedown(A)}},onmouseup:function(A){var B=this.nextResponder();if(B){B.onmouseup(A)}},onmousedrag:function(A){var B=this.nextResponder();if(B){B.onmousedrag(A)}},onmouseenter:function(A){var B=this.nextResponder();if(B){B.onmouseenter(A)}},onmouseleave:function(A){var B=this.nextResponder();if(B){B.onmouseleave(A)}},onclick:function(A){var B=this.nextResponder();if(B){B.onclick(A)}},ondblclick:function(A){var B=this.nextResponder();if(B){B.ondblclick(A)}},onkeydown:function(A){var B=this.nextResponder();if(B){B.onkeydown(A)}},onkeyup:function(A){var B=this.nextResponder();if(B){B.onkeyup(A)}},onkeypress:function(A){var B=this.nextResponder();if(B){B.onkeypress(A)}},ontouchstart:function(A){var B=this.nextResponder();if(B){B.ontouchstart(A)}},ontouchmove:function(A){var B=this.nextResponder();if(B){B.ontouchmove(A)}},ontouchend:function(A){var B=this.nextResponder();if(B){B.ontouchend(A)}},onswipe:function(A){var B=this.nextResponder();if(B){B.onswipe(A)}}});DC.View=Class.create(DC.Responder,{exposedBindings:["visible","class","enabled","editable","html","text"],defaultPlaceholders:{text:{multipleValues:_("marker.text.multipleValues"),nullValue:_("marker.text.placeholder"),noSelection:_("marker.text.noSelection")},html:{multipleValues:_("marker.text.multipleValues"),nullValue:_("marker.text.placeholder"),noSelection:_("marker.text.noSelection")}},automaticallySetupBindings:false,formatter:null,target:null,action:null,sendActionOn:["click"],animated:false,updateAnimationDuration:0,updateAnimationDelay:0,postUpdateAnimationDuration:0,postUpdateAnimationDelay:0,preUpdateAnimationDuration:0,preUpdateAnimationDelay:0,constructor:function(A,B,C){this.base(C);if("string"===typeof (A)){this.id=A;this.__view=document.getElementById(A)}else{this.id=Element.assignId(A);this.__view=A}if("object"===DC.typeOf(B)&&!("addObserverForKeyPath" in B)){DC.KVO.adaptTree(B)}this.__relativeSource=B;if(this.id in DC.View.viewLookup){throw new Error("Two views share the same ID: "+this.id)}this.viewElement().object=this;this.__updating=null;DC.View.viewLookup[this.id]=this},__postConstruct:function(){var B=this;function C(){if(DC.Browser.IE){delete B.__view;delete B.__container}}C.delay(250);var A=this.viewElement();if(A){this.__init()}else{Event.onDomReady(this.__init.bind(this))}},__init:function(){this.__initialising=true;var F=this.viewElement();if(!F){throw new Error("Unable to locate node with ID: "+this.id)}this.viewElement=function(){return F};var G;var A;var B=F.getAttribute("__parametersId");var H=this.__parameters||DC.View.nodeParameters[B]||{};this.__copyParameters(H);if(this.innerHTML&&""===String(F.innerHTML).trim()){F.innerHTML=this.innerHTML}var I=DC.dataModel;var C=this.__context;DC.dataModel=this.__context=this;var D=this.structure()||{};var E={};for(A in D){G=D[A];if(G&&"function"==typeof (G)&&(G=G.valueOf()).__factoryFn__){E[A]=G;G.call(this,A,true)}}for(A in E){E[A].call(this,A,false)}this.__context=C;DC.dataModel=I;this.setupBindings();this.init();this.initFromDOM();this.updateBindings();this.createObservers();delete this.__initialising;delete this.viewElement},teardown:function(){for(var A in this.bindings){this.bindings[A].unbind()}if(this.viewElement()){this.viewElement().object=null}if(!DC.Browser.IE){delete this.__view;delete this.__container}delete DC.View.viewLookup[this.id]},__factory__:function(D,I,A){var G=this;var F=Element.queryAll;var E=false;if("string"!==typeof (D)){A=I;I=D;D=null}I=I||{};var H="parameters_"+DC.generateUid();DC.View.nodeParameters[H]=I;I.viewClass=G;function C(K){K.setAttribute("__parametersId",H);var J;if("sortKey" in I){K.setAttribute("sortKey",I.sortKey)}}function B(K){if(!E){C(K)}var L=this.__relativeSource||this;var J=DC.View.fromNode(K)||new G(K,L);DC.View.createViewsForNodeTree(K,L,this.__context)}return function(L,K){if(L&&1===L.nodeType){return new G(L,K,I)}var M=A||(this?this.viewElement():document);var J=F(M,D||L);if(!J.length){return null}if("action" in I){if(!I.target){I.target=this}if(FIRST_RESPONDER!==I.target&&"string"===typeof (I.action)){I.action=(I.target)[I.action]}}Array.forEach(J,K?C:B,this);E=true;return DC.View.fromNode(J[0])}},init:function(){},initFromDOM:function(){},structure:function(){return this.__structure__},viewElement:function(){return this.__view||document.getElementById(this.id)},container:function(){return this.__container||this.__view||document.getElementById(this.__containerId||this.id)},setContainer:function(A){if(this.__view){this.__container=A}this.__containerId=Element.assignId(A);return A},superview:function(){var B=this.viewElement();if(!B){return null}var A=null;while(B&&!A){B=B.parentNode;if(!B){return null}if(document==B){return DC.page}A=DC.View.fromNode(B)}return A},isDescendantOf:function(B){if(!B){return false}var A=B.viewElement();var C=this.viewElement();while(C&&C!==document.body){if(C.id==A.id){return true}C=C.parentNode}return false},nextResponder:function(){return this.__nextResponder||this.superview()},focus:function(){var A=this.viewElement();A.focus()},blur:function(){var A=this.viewElement();A.blur()},sendAction:function(){var B=DC.EventLoop.currentEvent;if(!this.action){return }if(FIRST_RESPONDER!==this.target||"string"!==typeof (this.action)){this.action.call(this.target||this.action,this,B);return }var A=DC.page.firstResponder||this;var C=this.action;while(A){if(C in A){A[C](this,B);return }A=A.nextResponder()}},onclick:function(A){if(this.disabled){Event.stop(A);return }if(this.action&&this.sendActionOn.containsObject("click")){this.sendAction();Event.stop(A)}else{this.base(A)}},addTrackingInfo:function(A){DC.page.addTrackingInfo(this.id,A)},observeVisibleChange:function(F,E,B){var A=this.viewElement();var D=DC.Style.kFadingClass;function C(){A.style.display="none";Element.removeClassName(A,D)}if(!this.animated){A.style.display=(F.newValue?"":"none")}else{if(F.newValue){if(A.style.display!==""){Element.addClassName(A,D);A.style.display=""}DC.Animator.removeClassName(A,D,{duration:this.updateAnimationDuration||300})}else{DC.Animator.addClassName(A,D,{duration:this.updateAnimationDuration||300,callback:C})}}},observeEnabledChange:function(B){var A=this.viewElement();this.disabled=A.disabled=!B.newValue;if(A.disabled){Element.addClassName(A,DC.Style.kDisabledClass)}else{Element.removeClassName(A,DC.Style.kDisabledClass)}},observeEditableChange:function(B){var A=this.viewElement();A.readOnly=!B.newValue;if(A.readOnly){Element.addClassName(A,DC.Style.kReadOnlyClass)}else{Element.removeClassName(A,DC.Style.kReadOnlyClass)}},observeClassChange:function(H,G,D){var A=this.viewElement();var C=$S(A.className.split(" "));var F=$S((H.newValue||"").split(" "));function E(I){if(I in C){Set.add(F,I)}}DC.Style.__styles.forEach(E);var B=Set.join(F," ");if(this.animated){DC.Animator.setClassName(A,B,{duration:500})}else{A.className=B}},_beginUpdate:function(B,A){if(B){B.call(this)}},observeTextChange:function(G,F,C){var B=this.viewElement();var A=this.bindings.text&&this.bindings.text.markerType;var E=G.newValue;if(A){if(null===E||"undefined"===typeof (E)){E=""}Element.addClassName(B,DC.Style.kMarkerClass)}else{Element.removeClassName(B,DC.Style.kMarkerClass);if(this.formatter){E=this.formatter.stringFromValue(E)}}function D(){var H=document.createTextNode(E);B.innerHTML="";B.appendChild(H)}this._beginUpdate(D)},observeHtmlChange:function(G,F,C){var B=this.viewElement();var A=this.bindings.html&&this.bindings.html.markerType;var E=G.newValue;if(A){if(null===E||"undefined"===typeof (E)){E=""}Element.addClassName(B,DC.Style.kMarkerClass)}else{Element.removeClassName(B,DC.Style.kMarkerClass);if(this.formatter){E=this.formatter.stringFromValue(E)}}function D(){B.innerHTML=E}this._beginUpdate(D)},removeChild:function(A){if(!A){return null}DC.View.teardownViewsForNodeTree(A);if(this.beforeRemoveElement){this.beforeRemoveElement(A)}return A.parentNode.removeChild(A)},clonedFrom:function(A){}});DC.View.nodeParameters={};DC.View.viewLookup={};DC.View.__subclassCreated__=function(A){var B=A.prototype;var C=A.superclass.prototype;if(B.__structure__!==C.__structure__){Object.applyDefaults(B.__structure__,C.__structure__)}};DC.View.viewClassForNode=function(B,A){var C=B.getAttribute("__parametersId");if(!C){return null}return DC.View.nodeParameters[C].viewClass};DC.View.createViewForNode=function(C,E,B){var A=DC.View.fromNode(C);if(A){return A}var D=DC.View.viewClassForNode(C,B);return new (D||DC.View)(C,E,B)};DC.View.fromNode=function(A){var B=DC.View.viewLookup;var C=null;if(DC.typeOf(A)=="string"){C=A}else{if("id" in A){C=A.id}}if(!B||!C||!B[C]){return null}return B[C]};DC.View.rebindNodeTreeWithRelativeSource=function(B,D,C){function A(F){var E=DC.View.fromNode(F);if(!E||(D&&E.__relativeSource!==D)){return }E.__relativeSource=C;E.setupBindings();E.updateBindings()}Element.depthFirstTraversal(B,A)};DC.View.unbindNodeTree=function(B){function A(D){var C=DC.View.fromNode(D);if(!C){return }C.unbind()}Element.depthFirstTraversal(B,A)};DC.View.createViewsForNodeTree=function(E,C,D){function B(F){if(DC.View.fromNode(F)){return }var G=DC.View.viewClassForNode(F);if(!G){return }new (G)(F,C,DC.DashcodePart.PropertiesForNode(F))}var A=DC.dataModel;if(D){DC.dataModel=D}Element.depthFirstTraversal(E||document.body,B);if(D){DC.dataModel=A}};DC.View.teardownViewsForNodeTree=function(A){function B(D){var C=DC.View.fromNode(D);if(!C){return }C.teardown()}Element.depthFirstTraversal(A||document.body,B)};DC.View.cloneViewsForTreeNode=function(D,A,C){var F={};var B=Element.clone(D);function E(K){var G=K.id;if(K==D&&!G){G=D.id}if(G){F[G]=K}K.originalID=G;K.id="";var H=DC.View.fromNode(G);var I=DC.View.viewClassForNode(K);var J=null;if(!I||K.object){return true}J=new (I)(K,A,DC.DashcodePart.PropertiesForNode(K));if(H&&J){J.clonedFrom(H)}return true}Element.depthFirstTraversal(B,E);if(!B.object){B.object={}}B.object.templateElements=F;return B};DC.ImageView=Class.create(DC.View,{exposedBindings:["src","alt","width","height"],maskedBindings:["text","html"],init:function(){this.base();var A=this.viewElement();if(!this.defaultPlaceholders.src&&A.src){var B={};B.nullValue=B.noSelection=A.src;this.defaultPlaceholders.src=B}Event.observe(A,"error",this.onerror.bind(this));Event.observe(A,"load",this.onload.bind(this))},onload:function(){var A=this.viewElement();this.setValueForKey(false,"loading");Element.removeClassName(A,DC.Style.kLoadingClass)},onerror:function(){var A=this.viewElement();this.setValueForKey(false,"loading");Element.updateClass(A,DC.Style.kInvalidValueClass,DC.Style.kLoadingClass)},src:function(){var A=this.viewElement().src;return("about:blank"===A)?null:A},setSrc:function(C){if(this.bindings.src){this.bindings.src.setValue(C)}this.setValueForKey(true,"loading");var B=this.viewElement();Element.updateClass(B,DC.Style.kLoadingClass,DC.Style.kInvalidValueClass);if(!C){C="about:blank"}var A=B.src;B.src=C;if(DC.Browser.Safari&&B.src===A){this.onload()}},observeSrcChange:function(C){var B=this.viewElement();var A=this.bindings.src&&this.bindings.src.markerType;if(A){Element.addClassName(B,DC.Style.kMarkerClass)}else{Element.removeClassName(B,DC.Style.kMarkerClass)}this.setSrc(C.newValue)},observeWidthChange:function(C){var A=this.viewElement();var B=parseInt(C.newValue,10);if(isNaN(B)){A.removeAttribute("width")}else{A.width=B}},observeAltChange:function(B){var A=this.viewElement();A.alt=B.newValue||""},observeHeightChange:function(C){var B=this.viewElement();var A=parseInt(C.newValue,10);if(isNaN(A)){B.removeAttribute("height")}else{B.height=A}}});DC.ImageLayout=Class.create(DC.ImageView,{constructor:function(B,C,D){var A=B.getElementsByTagName("img")[0];if(!A){A=document.createElement("img");B.appendChild(imgElement)}this.setContainer(B);this._mediaElement=A;this.base(B,C,D)},viewElement:function(){return this._mediaElement},superview:function(){var A=null;var B=this.viewElement;this.viewElement=function(){return this.container()};A=this.base();this.viewElement=B;return A}});DC.DashcodePart=Class.create(DC.View,{maskedBindings:["html","text"],constructor:function(A,C,D,B){if(!B&&(A.id||A.originalID)&&dashcodePartSpecs){B=dashcodePartSpecs[A.originalID?A.originalID:A.id];if(B&&!D&&!dashcode.inDesign){D=B.propertyValues}}if(A.object){return }this.base(A,C,D);this._registerForDocumentInsertionNotifcationIfNeeded();this.partSetup(B)},partSetup:function(A){},_sendLegacyOnClick:function(D,C,E){var B=this;this._savedOnClick=C.onclick;C.onclick=function(F){E(F);C.onclick=B._savedOnClick;delete B._savedOnClick};if(document.createEvent){var A=document.createEvent("MouseEvents");A.initMouseEvent("click",false,false,window,1,D?D.screenX:0,D?D.screenY:0,D?D.clientX:0,D?D.clientY:0,D?D.ctrlKey:false,D?D.altKey:false,D?D.shiftKey:false,D?D.metaKey:false,D?D.button:0,null);C.dispatchEvent(A)}else{C.onclick(D)}},_setOnClickAsAction:function(C,B){var A=this;if(!B){B=this.viewElement()}if(C){this.action=function(D,E){A._sendLegacyOnClick(E,B,C)}}else{this.action=null}},insertedIntoDocument:function(){},_registerForDocumentInsertionNotifcationIfNeeded:function(){var D=this.viewElement();var C=D;var A=D.ownerDocument;while(D.parentNode){C=D;D=D.parentNode}if(D==A){return false}var B=this;Event.observe(C,"DOMNodeInsertedIntoDocument",function(E){B.insertedIntoDocument()})},observeEnabledChange:function(A){if(this.__initialising&&(null===A.newValue||"undefined"===A.newValue)){this.bindings.enabled.setValue(!this.valueForKey("enabled"));return }this.setValueForKey(A.newValue,"enabled")}});DC.DashcodePart.PropertiesForNode=function(B){if(dashcode.inDesign){return undefined}if((B.id||B.originalID)&&dashcodePartSpecs){var A=dashcodePartSpecs[B.originalID?B.originalID:B.id];if(A){return A.propertyValues}}return undefined};DC.DashcodePart.updateViewId=function(C,B){var A=DC.View.fromNode(C);A.id=B;delete DC.View.viewLookup[C];DC.View.viewLookup[B]=A};DC.Text=Class.create(DC.DashcodePart,{exposedBindings:["text","html"],partSetup:function(A){if(A.text){var B=A.text;if(window.dashcode&&dashcode.getLocalizedString){B=dashcode.getLocalizedString(B)}this.viewElement().innerText=B}}});DC.DashcodeOverrides={Original:{View:{createViewForNode:DC.View.createViewForNode,viewClassForNode:DC.View.viewClassForNode},Binding:{bindingFromString:DC.Binding.bindingFromString}},Replacement:{View:{createViewForNode:function(B,C,A){return DC.DashcodeOverrides.Original.View.createViewForNode(B,C,A)},viewClassForNode:function(node,hasBindings){var viewClass=undefined;if(node&&(node.originalID||node.id)){var spec=dashcodePartSpecs[node.originalID?node.originalID:node.id];if(spec&&spec.view){try{viewClass=eval(spec.view)}catch(e){}}if(spec&&spec.hasBindings){if(!hasBindings){hasBindings=true}}}if(!viewClass){viewClass=DC.DashcodeOverrides.Original.View.viewClassForNode(node,hasBindings)}return viewClass}},Binding:{bindingFromString:function(B,A){if(DC.DashcodeOverrides.bindToContent&&(A instanceof DC.ObjectController)){if((B.substr(0,7)!="content")){B="content."+B}}return DC.DashcodeOverrides.Original.Binding.bindingFromString(B,A)}}}};DC.View.viewClassForNode=DC.DashcodeOverrides.Replacement.View.viewClassForNode;DC.Binding.bindingFromString=DC.DashcodeOverrides.Replacement.Binding.bindingFromString;DC.EventLoop={currentEvent:null,getStart:function(){if(!this._start){this._start=new Date().getTime()}return this._start},begin:function(A){this._start=new Date().getTime();this.currentEvent=A},end:function(){this.currentEvent=null;this._start=null}};DC.Page=Class.create(DC.Responder,{focusedElement:null,constructor:function(){this.firstResponder=null;this.__hoverTrackingIds={};this._onmousedragHandler=this._onmousedrag.bindAsEventListener(this);this._delegates={click:[]};this.onclick=this._fireDelegates},targetViewForEvent:function(C){var B=C.target||C.srcElement;var A;var D=DC.View.fromNode;while(B&&B!=document&&!(A=D(B))){B=B.parentNode}if(!B||B==document){return null}return A},makeFirstResponder:function(A){if(this.firstResponder==A){return true}if(this.firstResponder&&!this.firstResponder.resignFirstResponder()){return false}if(this.firstResponder){Element.removeClassName(this.firstResponder.viewElement(),DC.Style.kFocusClass)}if(A&&!A.becomeFirstResponder()){return false}this.willChangeValueForKey("firstResponder");this.firstResponder=A;this.didChangeValueForKey("firstResponder");if(A){A.focus();Element.addClassName(A.viewElement(),DC.Style.kFocusClass)}return true},addTrackingInfo:function(C,B){if("string"!==typeof (C)){C=Element.assignId(C)}var A=this.__hoverTrackingIds[C];if(!A){A=this.__hoverTrackingIds[C]=[]}A.push(B)},superview:function(){return null},presentError:function(A){function B(){var C=A.description;if(A.recoverySuggestion){C+="\n"+A.recoverySuggestion}window.alert(C);DC.page.makeFirstResponder(A.field)}B.delay(0)},delegate:function(A,C,B){if("string"===typeof (C)){this._delegates[C].push({sel:A,fn:B})}else{var D;for(D in C){if(!(D in this._delegates)){throw new Error("Invalid delegation event type: "+D)}this._delegates[D].push({sel:A,fn:C[D]})}}},superview:function(){return null},_fireDelegates:function(E){var C=E.target||E.srcElement;var B=Element.match;var A=this._delegates[E.type]||[];function D(F){if(B(C,F.sel)){F.fn(E)}}A.forEach(D)},_findFirstResponder:function(A){while(A&&!A.acceptsFirstResponder()){A=A.superview()}if(!A){return }this.makeFirstResponder(A)},_onmousedown:function(B){var A=this.targetViewForEvent(B);if(A){this._findFirstResponder(A);A.onmousedown(B);Event.observe(document,"mousemove",this._onmousedragHandler)}this._mousedownView=A},_onmouseup:function(A){if(this._mousedownView){this._mousedownView.onmouseup(A)}Event.stopObserving(document,"mousemove",this._onmousedragHandler)},_onmousedrag:function(A){if(this._mousedownView){this._mousedownView.onmousedrag(A)}},_onmouseover:function(A){var E=this.__hoverTrackingIds||{};var L=this.__mouseOverIds||{};var C={};var H=A.target||A.srcElement;var F=document.body;var I;var K;var B;var D;var G;var J;for(;H&&H!=F;H=H.parentNode){B=H.id;if(!B||!(B in E)){continue}C[B]=true;if(B in L){continue}I=E[B];G=I.length;for(D=0;D<G;++D){J=I[D];if(J.onmouseenter){J.onmouseenter.call(J.owner,H,J.ownerInfo)}}}for(B in L){if(B in C){continue}H=document.getElementById(B);if(!H){continue}I=E[B];G=I.length;for(D=0;D<G;++D){J=I[D];if(J.onmouseleave){J.onmouseleave.call(J.owner,H,J.ownerInfo)}}}this.__mouseOverIds=C},_onmouseout:function(A){},_onclick:function(B){if(DC.Browser.Mozilla&&B.button===2){return }var A=this.targetViewForEvent(B);if(A){A.onclick(B)}else{this._fireDelegates(B)}},_ondblclick:function(A){if(this._mousedownView){this._mousedownView.ondblclick(A)}},_onkeydown:function(A){var B=this.firstResponder;if(B){B.onkeydown(A)}},_onkeyup:function(A){var B=this.firstResponder;if(B){B.onkeyup(A)}},_onkeypress:function(A){var B=this.firstResponder;if(B){B.onkeypress(A)}},_onfocus:function(B){var C=(B.target||B.srcElement)==window;if(DC.Browser.IE){if(document.activeElement==this.focusedElement){C=true}}if(C){if(!this._documentFocused){this.makeFirstResponder(this._previousFirstResponder||null);this._previousFirstResponder=null;this._documentFocused=true;if(!dashcode.inDesign&&document.body){Element.removeClassName(document.body,"DC_windowInactive")}}}else{var A=this.targetViewForEvent(B);if(A&&A.acceptsFirstResponder()){this.makeFirstResponder(A)}else{this.makeFirstResponder(null)}this.focusedElement=B.target||B.srcElement}},_onblur:function(B){var C=(B.target||B.srcElement)==window;if(DC.Browser.IE){if(document.activeElement==this.focusedElement){C=true}}if(C){this._documentFocused=false;this._previousFirstResponder=this.firstResponder;this.makeFirstResponder(null);if(!dashcode.inDesign&&document.body){Element.addClassName(document.body,"DC_windowInactive")}}else{var A=this.targetViewForEvent(B);this.focusedElement=null;if(A&&A.acceptsFirstResponder()){this.makeFirstResponder(null)}}},_ontouchstart:function(C){var A=this.targetViewForEvent(C);if(A){var B=this;A.ontouchstart(C);this._touchstartMouseDownDelay=window.setTimeout(function(){A.onmousedown(C);B._touchsentMD=true;delete B._touchstartMouseDownDelay},100)}this._touchstartView=A;this._touchmovedX=false;this._touchmovedY=false;this._touchsentMD=false;this._touchstartX=C.targetTouches[0].clientX;this._touchstartY=C.targetTouches[0].clientY},_ontouchmove:function(D){var A=D.targetTouches[0].clientX;var E=D.targetTouches[0].clientY;var B=false;var C=false;if(!this._touchmovedX&&Math.abs(this._touchstartX-A)>5){B=this._touchmovedX=true}if(!this._touchmovedY&&Math.abs(this._touchstartY-E)>5){C=this._touchmovedY=true}if(this._touchstartView){this._touchstartView.ontouchmove(D);if(this._touchstartMouseDownDelay){window.clearTimeout(this._touchstartMouseDownDelay);delete this._touchstartMouseDownDelay}if(B||C){if(this._touchsentMD){this._touchstartView.onmouseup(D);this._touchsentMD=false}if(!this._touchmovedY&&B){this._touchstartView.onswipe(D)}}}},_ontouchend:function(A){if(this._touchstartView){this._touchstartView.ontouchend(A);if(this._touchstartMouseDownDelay){var B=this._touchstartView;window.clearTimeout(this._touchstartMouseDownDelay);delete this._touchstartMouseDownDelay;this._touchstartView.onmousedown(A);this._touchsentMD=true;setTimeout(function(){B.onmouseup(A);B.onclick(A)},0)}else{if(this._touchsentMD){this._touchstartView.onmouseup(A);if(!this._touchmovedX&&!this._touchmovedY){this._touchstartView.onclick(A)}}}}},_ontouchcancel:function(A){if(this._touchstartView){this._touchstartView.ontouchend(A);if(this._touchstartMouseDownDelay){window.clearTimeout(this._touchstartMouseDownDelay);delete this._touchstartMouseDownDelay}else{if(this._touchsentMD){this._touchstartView.onmouseup(A)}}}},_onunload:function(){var B;var A=DC.View.viewLookup;for(B in A){A[B].teardown();delete A[B]}}});(function(){DC.page=new DC.Page();window._setTimeout=window.setTimeout;window.setTimeout=function(F,E){if(!F){return null}if("string"===typeof (F)){F="DC.EventLoop.begin();do {"+F+"} while (false); DC.EventLoop.end();";return window._setTimeout(F,E)}var D=Array.from(arguments,2);function C(){DC.EventLoop.begin();var G=F.apply(this,D);DC.EventLoop.end();return G}return window._setTimeout(C,E)};window._setInterval=window.setInterval;window.setInterval=function(F,E){if(!F){return null}if("string"===typeof (F)){F="DC.EventLoop.begin();do {"+F+"} while (false); DC.EventLoop.end();";return window._setInterval(F,E)}var D=Array.from(arguments,2);function C(){DC.EventLoop.begin();var G=F.apply(this,D);DC.EventLoop.end();return G}return window._setInterval(C,E)};var B=DC.page;var A;if(DC.Browser.IE){A=function(C){return function(){DC.EventLoop.begin(window.event);B[C](window.event);DC.EventLoop.end()}};document.attachEvent("onmouseover",A("_onmouseover"));document.attachEvent("onmouseout",A("_onmouseout"));document.attachEvent("onmousedown",A("_onmousedown"));document.attachEvent("onmouseup",A("_onmouseup"));document.attachEvent("onclick",A("_onclick"));document.attachEvent("ondblclick",A("_ondblclick"));document.attachEvent("onkeydown",A("_onkeydown"));document.attachEvent("onkeyup",A("_onkeyup"));document.attachEvent("onkeypress",A("_onkeypress"));document.attachEvent("onfocusin",A("_onfocus"));document.attachEvent("onfocusout",A("_onblur"));window.attachEvent("focus",A("_onfocus"));window.attachEvent("blur",A("_onblur"));window.attachEvent("onunload",A("_onunload"))}else{A=function(C){return function(D){DC.EventLoop.begin(D);B[C](D);DC.EventLoop.end()}};document.addEventListener("keydown",A("_onkeydown"),false);document.addEventListener("keyup",A("_onkeyup"),false);document.addEventListener("keypress",A("_onkeypress"),false);document.addEventListener("focus",A("_onfocus"),true);document.addEventListener("blur",A("_onblur"),true);window.addEventListener("focus",A("_onfocus"),false);window.addEventListener("blur",A("_onblur"),false);if(!DC.Browser.MobileSafari){document.addEventListener("click",A("_onclick"),false);document.addEventListener("dblclick",A("_ondblclick"),false)}if(DC.Support.Touches){document.addEventListener("touchstart",A("_ontouchstart"),true);document.addEventListener("touchmove",A("_ontouchmove"),true);document.addEventListener("touchend",A("_ontouchend"),true);document.addEventListener("touchcancel",A("_ontouchcancel"),true)}else{document.addEventListener("mouseover",A("_onmouseover"),false);document.addEventListener("mouseout",A("_onmouseout"),false);document.addEventListener("mousedown",A("_onmousedown"),false);document.addEventListener("mouseup",A("_onmouseup"),false)}}})();/* 
 This file was generated by Dashcode and is covered by the 
 license.txt included in the project.  You may edit this file, 
 however it is recommended to first turn off the Dashcode 
 code generator otherwise the changes will be lost.
 */
var dashcodePartSpecs = {
    "footer": { "text": "Developed with Dashcode", "view": "DC.Text" },
    "image": { "view": "DC.ImageLayout" }
};

/* 
 This file was generated by Dashcode and is covered by the 
 license.txt included in the project.  You may edit this file, 
 however it is recommended to first turn off the Dashcode 
 code generator otherwise the changes will be lost.
 */
var dashcodeDataSources = {
    "dataSource": { "Class": "DC.AjaxController" }
};