//>>built
define("dojox/dtl/tag/loop",["dojo/_base/lang","dojo/_base/array","dojo/_base/json","../_base","dojox/string/tokenize"],function(_1,_2,_3,dd,_4){
_1.getObject("dojox.dtl.tag.loop",true);
var _5=dd.tag.loop;
_5.CycleNode=_1.extend(function(_6,_7,_8,_9){
this.cyclevars=_6;
this.name=_7;
this.contents=_8;
this.shared=_9||{counter:-1,map:{}};
},{render:function(_a,_b){
if(_a.forloop&&!_a.forloop.counter0){
this.shared.counter=-1;
}
++this.shared.counter;
var _c=this.cyclevars[this.shared.counter%this.cyclevars.length];
var _d=this.shared.map;
if(!_d[_c]){
_d[_c]=new dd._Filter(_c);
}
_c=_d[_c].resolve(_a,_b);
if(this.name){
_a[this.name]=_c;
}
this.contents.set(_c);
return this.contents.render(_a,_b);
},unrender:function(_e,_f){
return this.contents.unrender(_e,_f);
},clone:function(_10){
return new this.constructor(this.cyclevars,this.name,this.contents.clone(_10),this.shared);
}});
_5.IfChangedNode=_1.extend(function(_11,_12,_13){
this.nodes=_11;
this._vars=_12;
this.shared=_13||{last:null,counter:0};
this.vars=_2.map(_12,function(_14){
return new dojox.dtl._Filter(_14);
});
},{render:function(_15,_16){
if(_15.forloop){
if(_15.forloop.counter<=this.shared.counter){
this.shared.last=null;
}
this.shared.counter=_15.forloop.counter;
}
var _17;
if(this.vars.length){
_17=_3.toJson(_2.map(this.vars,function(_18){
return _18.resolve(_15);
}));
}else{
_17=this.nodes.dummyRender(_15,_16);
}
if(_17!=this.shared.last){
var _19=(this.shared.last===null);
this.shared.last=_17;
_15=_15.push();
_15.ifchanged={firstloop:_19};
_16=this.nodes.render(_15,_16);
_15=_15.pop();
}else{
_16=this.nodes.unrender(_15,_16);
}
return _16;
},unrender:function(_1a,_1b){
return this.nodes.unrender(_1a,_1b);
},clone:function(_1c){
return new this.constructor(this.nodes.clone(_1c),this._vars,this.shared);
}});
_5.RegroupNode=_1.extend(function(_1d,key,_1e){
this._expression=_1d;
this.expression=new dd._Filter(_1d);
this.key=key;
this.alias=_1e;
},{_push:function(_1f,_20,_21){
if(_21.length){
_1f.push({grouper:_20,list:_21});
}
},render:function(_22,_23){
_22[this.alias]=[];
var _24=this.expression.resolve(_22);
if(_24){
var _25=null;
var _26=[];
for(var i=0;i<_24.length;i++){
var id=_24[i][this.key];
if(_25!==id){
this._push(_22[this.alias],_25,_26);
_25=id;
_26=[_24[i]];
}else{
_26.push(_24[i]);
}
}
this._push(_22[this.alias],_25,_26);
}
return _23;
},unrender:function(_27,_28){
return _28;
},clone:function(_29,_2a){
return this;
}});
_1.mixin(_5,{cycle:function(_2b,_2c){
var _2d=_2c.split_contents();
if(_2d.length<2){
throw new Error("'cycle' tag requires at least two arguments");
}
if(_2d[1].indexOf(",")!=-1){
var _2e=_2d[1].split(",");
_2d=[_2d[0]];
for(var i=0;i<_2e.length;i++){
_2d.push("\""+_2e[i]+"\"");
}
}
if(_2d.length==2){
var _2f=_2d[_2d.length-1];
if(!_2b._namedCycleNodes){
throw new Error("No named cycles in template: '"+_2f+"' is not defined");
}
if(!_2b._namedCycleNodes[_2f]){
throw new Error("Named cycle '"+_2f+"' does not exist");
}
return _2b._namedCycleNodes[_2f];
}
if(_2d.length>4&&_2d[_2d.length-2]=="as"){
var _2f=_2d[_2d.length-1];
var _30=new _5.CycleNode(_2d.slice(1,_2d.length-2),_2f,_2b.create_text_node());
if(!_2b._namedCycleNodes){
_2b._namedCycleNodes={};
}
_2b._namedCycleNodes[_2f]=_30;
}else{
_30=new _5.CycleNode(_2d.slice(1),null,_2b.create_text_node());
}
return _30;
},ifchanged:function(_31,_32){
var _33=_32.contents.split();
var _34=_31.parse(["endifchanged"]);
_31.delete_first_token();
return new _5.IfChangedNode(_34,_33.slice(1));
},regroup:function(_35,_36){
var _37=_4(_36.contents,/(\s+)/g,function(_38){
return _38;
});
if(_37.length<11||_37[_37.length-3]!="as"||_37[_37.length-7]!="by"){
throw new Error("Expected the format: regroup list by key as newList");
}
var _39=_37.slice(2,-8).join("");
var key=_37[_37.length-5];
var _3a=_37[_37.length-1];
return new _5.RegroupNode(_39,key,_3a);
}});
return dojox.dtl.tag.loop;
});
