//>>built define(["dojo/_base/lang","dojo/_base/array","dojo/_base/json","../_base","dojox/string/tokenize"],function(f,h,k,g,l){var e=f.getObject("tag.loop",!0,g);e.CycleNode=f.extend(function(a,b,c,d){this.cyclevars=a;this.name=b;this.contents=c;this.shared=d||{counter:-1,map:{}}},{render:function(a,b){a.forloop&&!a.forloop.counter0&&(this.shared.counter=-1);++this.shared.counter;var c=this.cyclevars[this.shared.counter%this.cyclevars.length],d=this.shared.map;d[c]||(d[c]=new g._Filter(c));c=d[c].resolve(a, b);this.name&&(a[this.name]=c);this.contents.set(c);return this.contents.render(a,b)},unrender:function(a,b){return this.contents.unrender(a,b)},clone:function(a){return new this.constructor(this.cyclevars,this.name,this.contents.clone(a),this.shared)}});e.IfChangedNode=f.extend(function(a,b,c){this.nodes=a;this._vars=b;this.shared=c||{last:null,counter:0};this.vars=h.map(b,function(a){return new dojox.dtl._Filter(a)})},{render:function(a,b){a.forloop&&(a.forloop.counter<=this.shared.counter&&(this.shared.last= null),this.shared.counter=a.forloop.counter);var c;c=this.vars.length?k.toJson(h.map(this.vars,function(b){return b.resolve(a)})):this.nodes.dummyRender(a,b);if(c!=this.shared.last){var d=null===this.shared.last;this.shared.last=c;a=a.push();a.ifchanged={firstloop:d};b=this.nodes.render(a,b);a=a.pop()}else b=this.nodes.unrender(a,b);return b},unrender:function(a,b){return this.nodes.unrender(a,b)},clone:function(a){return new this.constructor(this.nodes.clone(a),this._vars,this.shared)}});e.RegroupNode= f.extend(function(a,b,c){this._expression=a;this.expression=new g._Filter(a);this.key=b;this.alias=c},{_push:function(a,b,c){c.length&&a.push({grouper:b,list:c})},render:function(a,b){a[this.alias]=[];var c=this.expression.resolve(a);if(c){for(var d=null,e=[],f=0;fb.length)throw Error("'cycle' tag requires at least two arguments");if(-1!=b[1].indexOf(",")){var c=b[1].split(",");b=[b[0]];for(var d=0;da.length||"as"!=a[a.length-3]||"by"!=a[a.length-7])throw Error("Expected the format: regroup list by key as newList"); b=a.slice(2,-8).join("");return new e.RegroupNode(b,a[a.length-5],a[a.length-1])}});return e});