Type.registerNamespace("Templating");Templating.Template=function Templating_Template(E){this._templateContainer=E;if(!Templating.Template._regex){Templating.Template._regex=new RegExp("([^\\{]*)\\{([^\\}]+)\\}","g")}var D=[];var F=this._templateContainer.innerHTML.replace(/\n/g,"").replace(/%7B/g,"{").replace(/%7D/g,"}");this._format=F.replace(Templating.Template._regex,Function.createDelegate(this,function(H){var G=arguments[1];var J=arguments[2];if(J.substr(0,1)==="{"){return G+"{"+J+"}"}var I=J.split(":");Array.add(D,I[0]);I[0]=(D.length-1).toString();return G+"{"+I.join(":")+"}"}));var C=new Sys.StringBuilder();C.append("var container = document.createElement('div');");C.append("container.innerHTML = String.format(format");for(var B=0;B<D.length;B++){C.append(", data.");C.append(D[B])}C.appendLine(");");C.appendLine("var element = null;");C.appendLine("var itemContainer = $get('itemContainer', container);");C.appendLine("var children = itemContainer.childNodes;");C.appendLine("for (var i = 0; children.length; i++) {");C.appendLine("    if (children[i].nodeType == 1) { element = children[i]; break; }");C.appendLine("}");C.appendLine("if (element && callback) { callback(element, data, context); }");C.appendLine("return element;");var A=C.toString();this._compiledTemplate=new Function("format","data","callback","context",A)};Templating.Template.prototype={_templateContainer:null,_format:null,_compiledTemplate:null,get_templateContainer:function Templating_Template$get_templateContainer(){return this._templateContainer},createInstance:function Templating_Template$createInstance(B,C,A){return this._compiledTemplate(this._format,B,C,A)}};Templating.Repeater=function Templating_Repeater(A){Templating.Repeater.initializeBase(this,[A]);this._itemContainer$2=Sys.UI.DomElement.getElementById("itemContainer",A)};Templating.Repeater.prototype={_itemContainer$2:null,_data$2:null,_template$2:null,get_data:function Templating_Repeater$get_data(){return this._data$2},set_data:function Templating_Repeater$set_data(A){if(!this._data$2){this._data$2=A;return}this._update$2(A);return A},get_template:function Templating_Repeater$get_template(){if(this._template$2){return this._template$2.get_templateContainer()}return null},set_template:function Templating_Repeater$set_template(A){this._template$2=new Templating.Template(A);return A},addDataItem:function Templating_Repeater$addDataItem(A){if(this._template$2){var B=this._template$2.createInstance(A,null,null);if(B){Array.add(this._data$2,A);this._itemContainer$2.appendChild(B)}}},_update$2:function Templating_Repeater$_update$2(C){if((!C)||(!C.length)){this._itemContainer$2.innerHTML=""}else{if(!this._template$2){this._data$2=Array.clone(C);return}this._data$2=[];var B=this._itemContainer$2.tagName;if((window.navigator.userAgent.indexOf("MSIE")<0)||((B!=="TABLE")&&(B!=="TBODY")&&(B!=="TR"))){this._itemContainer$2.innerHTML=""}else{for(var A=this._itemContainer$2.childNodes.length-1;A>=0;A--){this._itemContainer$2.removeChild(this._itemContainer$2.childNodes[A])}}for(var A=0;A<C.length;A++){this.addDataItem(C[A])}}}};Templating.Template.registerClass("Templating.Template");Templating.Repeater.registerClass("Templating.Repeater",Sys.UI.Control);Templating.Template._regex=null;