//>>built
define("dojox/dtl/tag/logic",["dojo/_base/lang","../_base"],function(_1,dd){
var _2=_1.getObject("tag.logic",true,dd);
var _3=dd.text;
_2.IfNode=_1.extend(function(_4,_5,_6,_7){
this.bools=_4;
this.trues=_5;
this.falses=_6;
this.type=_7;
},{render:function(_8,_9){
var i,_a,_b,_c,_d;
if(this.type=="or"){
for(i=0;_a=this.bools[i];i++){
_b=_a[0];
_c=_a[1];
_d=_c.resolve(_8);
if((_d&&!_b)||(_b&&!_d)){
if(this.falses){
_9=this.falses.unrender(_8,_9);
}
return (this.trues)?this.trues.render(_8,_9,this):_9;
}
}
if(this.trues){
_9=this.trues.unrender(_8,_9);
}
return (this.falses)?this.falses.render(_8,_9,this):_9;
}else{
for(i=0;_a=this.bools[i];i++){
_b=_a[0];
_c=_a[1];
_d=_c.resolve(_8);
if(_d==_b){
if(this.trues){
_9=this.trues.unrender(_8,_9);
}
return (this.falses)?this.falses.render(_8,_9,this):_9;
}
}
if(this.falses){
_9=this.falses.unrender(_8,_9);
}
return (this.trues)?this.trues.render(_8,_9,this):_9;
}
return _9;
},unrender:function(_e,_f){
_f=(this.trues)?this.trues.unrender(_e,_f):_f;
_f=(this.falses)?this.falses.unrender(_e,_f):_f;
return _f;
},clone:function(_10){
var _11=(this.trues)?this.trues.clone(_10):null;
var _12=(this.falses)?this.falses.clone(_10):null;
return new this.constructor(this.bools,_11,_12,this.type);
}});
_2.IfEqualNode=_1.extend(function(_13,_14,_15,_16,_17){
this.var1=new dd._Filter(_13);
this.var2=new dd._Filter(_14);
this.trues=_15;
this.falses=_16;
this.negate=_17;
},{render:function(_18,_19){
var _1a=this.var1.resolve(_18);
var _1b=this.var2.resolve(_18);
_1a=(typeof _1a!="undefined")?_1a:"";
_1b=(typeof _1a!="undefined")?_1b:"";
if((this.negate&&_1a!=_1b)||(!this.negate&&_1a==_1b)){
if(this.falses){
_19=this.falses.unrender(_18,_19,this);
}
return (this.trues)?this.trues.render(_18,_19,this):_19;
}
if(this.trues){
_19=this.trues.unrender(_18,_19,this);
}
return (this.falses)?this.falses.render(_18,_19,this):_19;
},unrender:function(_1c,_1d){
return _2.IfNode.prototype.unrender.call(this,_1c,_1d);
},clone:function(_1e){
var _1f=this.trues?this.trues.clone(_1e):null;
var _20=this.falses?this.falses.clone(_1e):null;
return new this.constructor(this.var1.getExpression(),this.var2.getExpression(),_1f,_20,this.negate);
}});
_2.ForNode=_1.extend(function(_21,_22,_23,_24){
this.assign=_21;
this.loop=new dd._Filter(_22);
this.reversed=_23;
this.nodelist=_24;
this.pool=[];
},{render:function(_25,_26){
var i,j,k;
var _27=false;
var _28=this.assign;
for(k=0;k<_28.length;k++){
if(typeof _25[_28[k]]!="undefined"){
_27=true;
_25=_25.push();
break;
}
}
if(!_27&&_25.forloop){
_27=true;
_25=_25.push();
}
var _29=this.loop.resolve(_25)||[];
var _2a=_1.isObject(_29)&&!_1.isArrayLike(_29);
var _2b=[];
if(_2a){
for(var key in _29){
_2b.push(_29[key]);
}
}else{
_2b=_29;
}
for(i=_2b.length;i<this.pool.length;i++){
this.pool[i].unrender(_25,_26,this);
}
if(this.reversed){
_2b=_2b.slice(0).reverse();
}
var _2c=_25.forloop={parentloop:_25.get("forloop",{})};
var j=0;
for(i=0;i<_2b.length;i++){
var _2d=_2b[i];
_2c.counter0=j;
_2c.counter=j+1;
_2c.revcounter0=_2b.length-j-1;
_2c.revcounter=_2b.length-j;
_2c.first=!j;
_2c.last=(j==_2b.length-1);
if(_28.length>1&&_1.isArrayLike(_2d)){
if(!_27){
_27=true;
_25=_25.push();
}
var _2e={};
for(k=0;k<_2d.length&&k<_28.length;k++){
_2e[_28[k]]=_2d[k];
}
_1.mixin(_25,_2e);
}else{
_25[_28[0]]=_2d;
}
if(j+1>this.pool.length){
this.pool.push(this.nodelist.clone(_26));
}
_26=this.pool[j++].render(_25,_26,this);
}
delete _25.forloop;
if(_27){
_25=_25.pop();
}else{
for(k=0;k<_28.length;k++){
delete _25[_28[k]];
}
}
return _26;
},unrender:function(_2f,_30){
for(var i=0,_31;_31=this.pool[i];i++){
_30=_31.unrender(_2f,_30);
}
return _30;
},clone:function(_32){
return new this.constructor(this.assign,this.loop.getExpression(),this.reversed,this.nodelist.clone(_32));
}});
_1.mixin(_2,{if_:function(_33,_34){
var i,_35,_36,_37=[],_38=_34.contents.split();
_38.shift();
_34=_38.join(" ");
_38=_34.split(" and ");
if(_38.length==1){
_36="or";
_38=_34.split(" or ");
}else{
_36="and";
for(i=0;i<_38.length;i++){
if(_38[i].indexOf(" or ")!=-1){
throw new Error("'if' tags can't mix 'and' and 'or'");
}
}
}
for(i=0;_35=_38[i];i++){
var not=false;
if(_35.indexOf("not ")==0){
_35=_35.slice(4);
not=true;
}
_37.push([not,new dd._Filter(_35)]);
}
var _39=_33.parse(["else","endif"]);
var _3a=false;
var _34=_33.next_token();
if(_34.contents=="else"){
_3a=_33.parse(["endif"]);
_33.next_token();
}
return new _2.IfNode(_37,_39,_3a,_36);
},_ifequal:function(_3b,_3c,_3d){
var _3e=_3c.split_contents();
if(_3e.length!=3){
throw new Error(_3e[0]+" takes two arguments");
}
var end="end"+_3e[0];
var _3f=_3b.parse(["else",end]);
var _40=false;
var _3c=_3b.next_token();
if(_3c.contents=="else"){
_40=_3b.parse([end]);
_3b.next_token();
}
return new _2.IfEqualNode(_3e[1],_3e[2],_3f,_40,_3d);
},ifequal:function(_41,_42){
return _2._ifequal(_41,_42);
},ifnotequal:function(_43,_44){
return _2._ifequal(_43,_44,true);
},for_:function(_45,_46){
var _47=_46.contents.split();
if(_47.length<4){
throw new Error("'for' statements should have at least four words: "+_46.contents);
}
var _48=_47[_47.length-1]=="reversed";
var _49=(_48)?-3:-2;
if(_47[_47.length+_49]!="in"){
throw new Error("'for' tag received an invalid argument: "+_46.contents);
}
var _4a=_47.slice(1,_49).join(" ").split(/ *, */);
for(var i=0;i<_4a.length;i++){
if(!_4a[i]||_4a[i].indexOf(" ")!=-1){
throw new Error("'for' tag received an invalid argument: "+_46.contents);
}
}
var _4b=_45.parse(["endfor"]);
_45.next_token();
return new _2.ForNode(_4a,_47[_47.length+_49+1],_48,_4b);
}});
return _2;
});
