function Linkify(a){var b=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;var c=a.replace(b,'<a href="$1" target="_blank">$1</a>');var d=/(^|[^\/])(www\.[\S]+(\b|$))/gim;var c=c.replace(d,'$1<a href="http://$2" target="_blank">$2</a>');var e=/(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;var c=c.replace(e,'<a href="mailto:$1">$1</a>');return c}function TempoEvent(a,b,c){this.type=a;this.item=b;this.element=c;return this}TempoEvent.Types={RENDER_STARTING:"render_starting",ITEM_RENDER_STARTING:"item_render_starting",ITEM_RENDER_COMPLETE:"item_render_complete",RENDER_COMPLETE:"render_complete"};var Tempo=function(tempo){function Renderer(a){this.templates=a;this.listener=undefined;this.started=false;this.varRegex=new RegExp(this.templates.var_brace_left+"[ ]?([A-Za-z0-9$\\._\\[\\]]*?)([ ]?\\|[ ]?.*?)?[ ]?"+this.templates.var_brace_right,"g");this.tagRegex=new RegExp(this.templates.tag_brace_left+"[ ]?([\\s\\S]*?)( [\\s\\S]*?)?[ ]?"+this.templates.tag_brace_right+"(([\\s\\S]*?)(?="+this.templates.tag_brace_left+"[ ]?end\\1[ ]?"+this.templates.tag_brace_right+"))?","g");return this}function Templates(a,b){this.params=a;this.defaultTemplate=null;this.namedTemplates={};this.container=null;this.nestedItem=b!==undefined?b:null;this.var_brace_left="\\{\\{";this.var_brace_right="\\}\\}";this.tag_brace_left="\\{%";this.tag_brace_right="%\\}";if(typeof a!=="undefined"){for(var c in a){if(c==="var_braces"){this.var_brace_left=a[c].substring(0,a[c].length/2);this.var_brace_right=a[c].substring(a[c].length/2)}else if(c==="tag_braces"){this.tag_brace_left=a[c].substring(0,a[c].length/2);this.tag_brace_right=a[c].substring(a[c].length/2)}else if(typeof this[c]!=="undefined"){this[c]=a[c]}}}return this}var NUMBER_FORMAT_REGEX=/(\d+)(\d{3})/;var utils={memberRegex:function(a){var b="";for(var c in a){if(a.hasOwnProperty(c)){if(b.length>0){b+="|"}b+=c}}return b},pad:function(a,b,c){while(a.length<c){a=b+a}return a},trim:function(a){return a.replace(/^\s*([\S\s]*?)\s*$/,"$1")},startsWith:function(a,b){return a.indexOf(b)===0},clearContainer:function(a){if(a!==undefined&&a.childNodes!==undefined){for(var b=a.childNodes.length;b>=0;b--){if(a.childNodes[b]!==undefined&&a.childNodes[b].getAttribute!==undefined&&a.childNodes[b].getAttribute("data-template")!==null){a.childNodes[b].parentNode.removeChild(a.childNodes[b])}}}},isNested:function(a){var b=a.parentNode;while(b){if(b.getAttribute!==undefined&&b.getAttribute("data-template")!==null){return true}b=b.parentNode}return false},equalsIgnoreCase:function(a,b){return a.toLowerCase()===b.toLowerCase()},getElement:function(a,b){if(utils.equalsIgnoreCase(a.tagName,"tr")){var c=document.createElement("div");c.innerHTML="<table><tbody>"+b+"</tbody></table>";var d=3;while(d--){c=c.lastChild}return c}else{a.innerHTML=b;return a}},typeOf:function(a){if(typeof a==="object"){if(a===null){return"null"}if(a.constructor===[].constructor){return"array"}if(a.constructor===(new Date).constructor){return"date"}if(a.constructor===(new RegExp).constructor){return"regex"}return"object"}return typeof a},notify:function(a,b){if(a!==undefined){a(b)}}};Templates.prototype={parse:function(a){this.container=a;var b=a.getElementsByTagName("*");for(var c=0;c<b.length;c++){if(b[c].getAttribute!==undefined&&b[c].getAttribute("data-template")!==null&&(this.nestedItem===b[c].getAttribute("data-template")||b[c].getAttribute("data-template")===""||b[c].getAttribute("data-template")==="data-template"&&!utils.isNested(b[c]))){this.createTemplate(b[c])}else if(b[c].getAttribute!==undefined&&b[c].getAttribute("data-template-fallback")!==null){b[c].style.display="none"}}if(this.defaultTemplate===null){var d=document.createElement("div");d.setAttribute("data-template","");d.innerHTML=this.container.innerHTML;this.container.innerHTML="";this.container.appendChild(d);this.createTemplate(d)}utils.clearContainer(this.container)},createTemplate:function(a){var b=a.cloneNode(true);if(b.style.removeAttribute){b.style.removeAttribute("display")}else{b.style.removeProperty("display")}this.container=a.parentNode;var c=false;for(var d=0;d<b.attributes.length;d++){var e=b.attributes[d];if(utils.startsWith(e.name,"data-if-")){var f;if(e.value===""){f=true}else{f="'"+e.value+"'"}this.namedTemplates[e.name.substring(8,e.name.length)+"=="+f]=b;b.removeAttribute(e.name);c=true}}if(!c){this.defaultTemplate=b}},templateFor:function(i){for(var templateName in this.namedTemplates){if(eval("i."+templateName)){return this.namedTemplates[templateName].cloneNode(true)}}if(this.defaultTemplate){return this.defaultTemplate.cloneNode(true)}}};Renderer.prototype={notify:function(a){this.listener=a;return this},_replaceVariables:function(renderer,_tempo,i,str){return str.replace(this.varRegex,function(match,variable,args){try{var val=null;if(utils.startsWith(variable,"_tempo.")){return eval(variable)}if(utils.typeOf(i)==="array"){val=eval("i"+variable)}else{val=eval("i."+variable)}var filterSplitter=new RegExp("\\|[ ]?(?="+utils.memberRegex(renderer.filters)+")","g");if(args!==undefined&&args!==""){var filters=utils.trim(utils.trim(args).substring(1)).split(filterSplitter);for(var p=0;p<filters.length;p++){var filter=utils.trim(filters[p]);var filter_args=[];if(filter.indexOf(" ")>-1){var f=filter.substring(filter.indexOf(" ")).replace(/^[ ']*|[ ']*$/g,"");filter_args=f.split(/(?:[\'"])[ ]?,[ ]?(?:[\'"])/);filter=filter.substring(0,filter.indexOf(" "))}val=renderer.filters[filter](val,filter_args)}}if(val!==undefined){return val}}catch(err){}return""})},_replaceObjects:function(renderer,_tempo,i,str){var regex=new RegExp("(?:__[\\.]?)((_tempo|\\[|"+utils.memberRegex(i)+")([A-Za-z0-9$\\._\\[\\]]+)?)","g");return str.replace(regex,function(match,variable,args){try{var val=null;if(utils.startsWith(variable,"_tempo.")){return eval(variable)}if(utils.typeOf(i)==="array"){val=eval("i"+variable)}else{val=eval("i."+variable)}if(val!==undefined){if(utils.typeOf(val)==="string"){return"'"+val+"'"}else{return val}}}catch(err){}return undefined})},_applyAttributeSetters:function(a,b,c){return c.replace(/([A-z0-9]+?)(?==).*?data-\1="(.*?)"/g,function(a,b,c){if(c!==""){return b+'="'+c+'"'}return a})},_applyTags:function(a,b,c){return c.replace(this.tagRegex,function(c,d,e,f){if(a.tags.hasOwnProperty(d)){e=e.substring(e.indexOf(" ")).replace(/^[ ]*|[ ]*$/g,"");var g=e.split(/(?:['"])[ ]?,[ ]?(?:['"])/);return a.tags[d](a,b,c,g,f)}else{return""}})},starting:function(){this.started=true;utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_STARTING,undefined,undefined));return this},renderItem:function(renderer,tempo_info,i,fragment){var template=renderer.templates.templateFor(i);if(template&&i){utils.notify(this.listener,new TempoEvent(TempoEvent.Types.ITEM_RENDER_STARTING,i,template));var nestedDeclaration=template.innerHTML.match(/data-template="(.*?)"/g);if(nestedDeclaration){for(var p=0;p<nestedDeclaration.length;p++){var nested=nestedDeclaration[p].match(/"(.*?)"/)[1];var t=new Templates(renderer.templates.params,nested);t.parse(template);var r=new Renderer(t);r.render(eval("i."+nested))}}var html=template.innerHTML.replace(/%7B%7B/g,"{{").replace(/%7D%7D/g,"}}");html=this._applyTags(this,i,html);html=this._replaceVariables(this,tempo_info,i,html);html=this._replaceObjects(this,tempo_info,i,html);if(template.getAttribute("class")){template.className=this._replaceVariables(this,tempo_info,i,template.className)}if(template.getAttribute("id")){template.id=this._replaceVariables(this,tempo_info,i,template.id)}html=this._applyAttributeSetters(this,i,html);fragment.appendChild(utils.getElement(template,html));utils.notify(this.listener,new TempoEvent(TempoEvent.Types.ITEM_RENDER_COMPLETE,i,template))}},_createFragment:function(a){if(a){var b={};var c=document.createDocumentFragment();if(utils.typeOf(a)==="object"){a=[a]}for(var d=0;d<a.length;d++){b.index=d;this.renderItem(this,b,a[d],c)}return c}return null},render:function(a){if(!this.started){utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_STARTING,undefined,undefined))}this.clear();this.append(a);return this},append:function(a){if(!this.started){utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_STARTING,undefined,undefined))}var b=this._createFragment(a);if(b!==null){this.templates.container.appendChild(b)}utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_COMPLETE,undefined,undefined));return this},prepend:function(a){if(!this.started){utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_STARTING,undefined,undefined))}var b=this._createFragment(a);if(b!==null){this.templates.container.insertBefore(b,this.templates.container.firstChild)}utils.notify(this.listener,new TempoEvent(TempoEvent.Types.RENDER_COMPLETE,undefined,undefined));return this},clear:function(a){utils.clearContainer(this.templates.container)},tags:{"if":function(renderer,i,match,args,body){var member_regex=utils.memberRegex(i);var expr=args[0].replace(/&/g,"&");expr=expr.replace(new RegExp(member_regex,"gi"),function(a){return"i."+a});var blockRegex=new RegExp(renderer.templates.tag_brace_left+"[ ]?else[ ]?"+renderer.templates.tag_brace_right,"g");var blocks=body.split(blockRegex);if(eval(expr)){return blocks[0]}else if(blocks.length>1){return blocks[1]}return""}},filters:{truncate:function(a,b){if(a!==undefined){var c=0;var d="...";if(b.length>0){c=parseInt(b[0])}if(b.length>1){d=b[1]}if(a.length>c-3){return a.substr(0,c-3)+d}return a}},format:function(a,b){if(a!==undefined){var c=(a+"").split(".");var d=c[0];var e=c.length>1?"."+c[1]:"";while(NUMBER_FORMAT_REGEX.test(d)){d=d.replace(NUMBER_FORMAT_REGEX,"$1"+","+"$2")}return d+e}},upper:function(a,b){return a.toUpperCase()},lower:function(a,b){return a.toLowerCase()},trim:function(a,b){return utils.trim(a)},replace:function(a,b){if(a!==undefined&&b.length===2){retorno=Linkify(a);retorno2=retorno.replace(new RegExp(b[0],"g"),b[1]);return retorno2}return a},append:function(a,b){if(a!==undefined&&b.length===1){return a+""+b[0]}return a},prepend:function(a,b){if(a!==undefined&&b.length===1){return b[0]+""+a}return a},"default":function(a,b){if(a!==undefined&&a!==null){return a}if(b.length===1){return b[0]}return a},date:function(a,b){if(a!==undefined&&b.length===1){var c=new Date(a);var d=b[0];if(d==="localedate"){return c.toLocaleDateString()}else if(d==="localetime"){return c.toLocaleTimeString()}else if(d==="date"){return c.toDateString()}else if(d==="time"){return c.toTimeString()}else{var e=["January","February","March","April","May","June","July","August","September","October","November","December"];var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var g={YYYY:function(a){return a.getFullYear()},YY:function(a){return a.getFullYear().toFixed().substring(2)},MMMM:function(a){return e[a.getMonth()]},MMM:function(a){return e[a.getMonth()].substring(0,3)},MM:function(a){return utils.pad((a.getMonth()+1).toFixed(),"0",2)},M:function(a){return a.getMonth()+1},DD:function(a){return utils.pad(a.getDate().toFixed(),"0",2)},D:function(a){return a.getDate()},EEEE:function(a){return f[a.getDay()]},EEE:function(a){return f[a.getDay()].substring(0,3)},E:function(a){return a.getDay()},HH:function(a){return utils.pad(a.getHours().toFixed(),"0",2)},H:function(a){return a.getHours()},mm:function(a){return utils.pad(a.getMinutes().toFixed(),"0",2)},m:function(a){return a.getMinutes()},ss:function(a){return utils.pad(a.getSeconds().toFixed(),"0",2)},s:function(a){return a.getSeconds()},SSS:function(a){return utils.pad(a.getMilliseconds().toFixed(),"0",3)},S:function(a){return a.getMilliseconds()},a:function(a){return a.getHours()<12?"AM":"PM"}};d=d.replace(/(\\)?(Y{2,4}|M{1,4}|D{1,2}|E{1,4}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|a)/g,function(a,b,d){if(!b){if(g.hasOwnProperty(d)){return g[d](c)}}return d});return d}}return""}}};tempo.prepare=function(a,b){if(typeof a==="string"){a=document.getElementById(a)}var c=new Templates(b);c.parse(a);return new Renderer(c)};tempo.test={utils:utils,templates:new Templates({}),renderer:new Renderer(new Templates({}))};return tempo}(Tempo||{})
