/*!
* Tim
*   github.com/premasagar/tim
*
*//*
    A tiny, secure JavaScript micro-templating script.
*/
var tim=function D(y){function z(){o=RegExp(h.start+"\\s*("+h.path+")\\s*"+h.end,"gi")}function A(a){var b;if(a){for(b in a)if(a.hasOwnProperty(b))h[b]=a[b];z()}return h}function r(a,b){var c;switch(typeof a){case "string":if(b===p)return q[a]||"";else if(b===false)delete q[a];else q[a]=b;break;case "object":for(c in a)a.hasOwnProperty(c)&&r(c,a[c]);break;case "boolean":a||(q={})}return q}function E(a,b){return a[1]-b[1]}function u(a,b,c){var e=v[a];e||(e=v[a]=[]);e.push([b,c||0]);e.sort(E);return b}
function l(a,b){var c=v[a],e,d,f,g;if(c){e=[b];d=2;for(f=arguments.length;d<f;d++)e.push(arguments[d]);d=0;for(f=c.length;d<f;d++){e[0]=b;g=c[d][0].apply(null,e);if(b!==p&&g!==p)b=g;if(w){w=false;break}}}return b}function B(a,b){return(typeof b==="function"?u:l).apply(null,arguments)}function m(a,b){var c;if(!C){C=1;l("init")}a=l("templateBefore",a);if(a.indexOf(h.start)<0)if(c=r(a))a=c;if((a=l("template",a))&&b!==p){c=a;for(var e,d,f,g,i,j,x,k,s,n;(e=o.exec(c))!==null;){d=e[1];f=l("token",d,b,c);
g=e.index;e=o.lastIndex;g=c.slice(0,g);i=c.slice(e);if(typeof f!=="object")c=g+f+i;else{j="";x=h.start+"/"+d+h.end;k=i.indexOf(x);if(k>=0){i=i.slice(0,k);for(s in f)if(f.hasOwnProperty(s)){o.lastIndex=0;k={_key:s};n=f[s];var t=void 0;for(t in n)if(n.hasOwnProperty(t))k[t]=n[t];k=k;n=m(i,k);j+=l("loop",n,d,k,b,c)}j=l("loopEnd",j,d,f,b,c);c=g+j+c.slice(e+i.length+x.length)}else throw"tim: '"+d+"' not closed";}o.lastIndex=0}a=c}return a=l("templateAfter",a)}var h={start:"{{",end:"}}",path:"[a-z0-9_][\\.a-z0-9_]*"},
q={},v={},w,o,C,p;y?A(y):z();B.stop=function(){w=true};m.settings=A;m.templates=r;m.parser=D;m.filter=B;u("token",function(a,b,c){a=a.split(".");var e=a.length;b=b;for(var d=0;d<e;d++){b=b[a[d]];if(b===p)throw"tim: '"+a[d]+"' not found"+(d?" in "+c:"");if(d===e-1)return b}});if(window&&window.document){m.dom=function(a){a=a||{};var b=a.type||h.type||"text/tim";a=a.attr||h.attr||"class";var c=window.document,e=!!c.querySelectorAll;c=e?c.querySelectorAll("script[type='"+b+"']"):c.getElementsByTagName("script");
for(var d=0,f=c.length,g,i,j={};d<f;d++){g=c[d];if((i=g.getAttribute(a))&&e||c[g.type]===b)j[i]=g.innerHTML}r(j);return j};u("init",function(){m.dom()})}return m}();
