/*
	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dijit._Templated"]){
dojo._hasResource["dijit._Templated"]=true;
dojo.provide("dijit._Templated");
dojo.require("dijit._Widget");
dojo.require("dojo.string");
dojo.require("dojo.parser");
dojo.declare("dijit._Templated",null,{templateString:null,templatePath:null,widgetsInTemplate:false,_skipNodeCache:false,_stringRepl:function(_1){
var _2=this.declaredClass,_3=this;
return dojo.string.substitute(_1,this,function(_4,_5){
if(_5.charAt(0)=="!"){
_4=dojo.getObject(_5.substr(1),_3);
}
if(typeof _4=="undefined"){
throw new Error(_2+" template:"+_5);
}
if(_4==null){
return "";
}
return _5.charAt(0)=="!"?_4:_4.toString().replace(/"/g,"&quot;");
},this);
},buildRendering:function(){
var _6=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);
var _7;
if(dojo.isString(_6)){
_7=dojo._toDom(this._stringRepl(_6));
}else{
_7=_6.cloneNode(true);
}
this.domNode=_7;
this._attachTemplateNodes(_7);
if(this.widgetsInTemplate){
var cw=(this._supportingWidgets=dojo.parser.parse(_7));
this._attachTemplateNodes(cw,function(n,p){
return n[p];
});
}
this._fillContent(this.srcNodeRef);
},_fillContent:function(_b){
var _c=this.containerNode;
if(_b&&_c){
while(_b.hasChildNodes()){
_c.appendChild(_b.firstChild);
}
}
},_attachTemplateNodes:function(_d,_e){
_e=_e||function(n,p){
return n.getAttribute(p);
};
var _11=dojo.isArray(_d)?_d:(_d.all||_d.getElementsByTagName("*"));
var x=dojo.isArray(_d)?0:-1;
var _13={};
for(;x<_11.length;x++){
var _14=(x==-1)?_d:_11[x];
if(this.widgetsInTemplate&&_e(_14,"dojoType")){
continue;
}
var _15=_e(_14,"dojoAttachPoint");
if(_15){
var _16,_17=_15.split(/\s*,\s*/);
while((_16=_17.shift())){
if(dojo.isArray(this[_16])){
this[_16].push(_14);
}else{
this[_16]=_14;
}
}
}
var _18=_e(_14,"dojoAttachEvent");
if(_18){
var _19,_1a=_18.split(/\s*,\s*/);
var _1b=dojo.trim;
while((_19=_1a.shift())){
if(_19){
var _1c=null;
if(_19.indexOf(":")!=-1){
var _1d=_19.split(":");
_19=_1b(_1d[0]);
_1c=_1b(_1d[1]);
}else{
_19=_1b(_19);
}
if(!_1c){
_1c=_19;
}
this.connect(_14,_19,_1c);
}
}
}
var _1e=_e(_14,"waiRole");
if(_1e){
dijit.setWaiRole(_14,_1e);
}
var _1f=_e(_14,"waiState");
if(_1f){
dojo.forEach(_1f.split(/\s*,\s*/),function(_20){
if(_20.indexOf("-")!=-1){
var _21=_20.split("-");
dijit.setWaiState(_14,_21[0],_21[1]);
}
});
}
}
}});
dijit._Templated._templateCache={};
dijit._Templated.getCachedTemplate=function(_22,_23,_24){
var _25=dijit._Templated._templateCache;
var key=_23||_22;
var _27=_25[key];
if(_27){
if(!_27.ownerDocument||_27.ownerDocument==dojo.doc){
return _27;
}
dojo.destroy(_27);
}
if(!_23){
_23=dijit._Templated._sanitizeTemplateString(dojo.trim(dojo._getText(_22)));
}
_23=dojo.string.trim(_23);
if(_24||_23.match(/\$\{([^\}]+)\}/g)){
return (_25[key]=_23);
}else{
return (_25[key]=dojo._toDom(_23));
}
};
dijit._Templated._sanitizeTemplateString=function(_28){
if(_28){
_28=_28.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
var _29=_28.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
if(_29){
_28=_29[1];
}
}else{
_28="";
}
return _28;
};
if(dojo.isIE){
dojo.addOnWindowUnload(function(){
var _2a=dijit._Templated._templateCache;
for(var key in _2a){
var _2c=_2a[key];
if(!isNaN(_2c.nodeType)){
dojo.destroy(_2c);
}
delete _2a[key];
}
});
}
dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});
}
