//dna.js v0.2.1 ~~ dnajs.org/license.html
var dna={};dna.util={toCamel:function(a){function b(a,b){return b.toUpperCase()}return(""+a).replace(/\-(.)/g,b)},toCode:function(a){function b(a){return"-"+a.toLowerCase()}return(""+a).replace(/([A-Z])/g,b).replace(/\s|^-/g,"")},value:function(a,b){return"string"==typeof b&&(b=b.split(".")),null===a||void 0===a||void 0===b?null:1===b.length?a[b[0]]:this.value(a[b[0]],b.slice(1))},realTruth:function(a){function b(){return/^(f|false|0)$/i.test(a)}function c(){return a instanceof Array&&0===a.length}return a?!c()&&!b():!1},call:function(a,b){function c(d,e){d?1==e.length?d[e[0]](b):c(d[e[0]],e.slice(1)):dna.core.berserk('Invalid name before "'+e[0]+'" in: '+a)}return"string"==typeof a?c(window,a.split(".")):a instanceof Function&&a(b),b},apply:function(a,b,c){return a.find(b).addBack(b).each(c)},toElem:function(a,b){return a instanceof jQuery?a:$(a.target?a.target:b)},deleteElem:function(){return $(this).remove()},slideFade:function(a,b,c){function d(){a.css(h)}var e={opacity:0,transition:"opacity 0s ease 0s"},f={opacity:1,transition:"opacity 0.4s ease-in"},g={opacity:0,transition:"opacity 0.4s ease-out"},h={transition:"opacity 0s ease 0s"};return window.setTimeout(d,1e3),c?a.css(e).hide().slideDown({complete:b}).css(f):a.css(g).slideUp({complete:b}),a},slideFadeIn:function(a,b){return dna.util.slideFade(a,b,!0)},slideFadeOut:function(a,b){return dna.util.slideFade(a,b,!1)},slideFadeToggle:function(a,b){return dna.util.slideFade(a,b,!a.is(":visible"))},slideFadeDelete:function(a){return dna.util.slideFadeOut(a,dna.util.deleteElem)}},dna.compile={regexDnaField:/^[\s]*(~~|\{\{).*(~~|\}\})[\s]*$/,regexDnaBasePair:/~~|{{|}}/,regexDnaBasePairs:/~~|\{\{|\}\}/g,isDnaField:function(){var a=$(this)[0].childNodes[0];return a&&a.nodeValue&&a.nodeValue.match(dna.compile.regexDnaField)},field:function(){var a=$(this);return a.addClass("dna-field").data("dna-field",$.trim(a.text()).replace(dna.compile.regexDnaBasePairs,"")).empty(),a},attrs:function(){function a(){3===this.value.split(dna.compile.regexDnaBasePair).length&&c.push(this.name.replace(/^data-dna-attr-/,""),this.value.split(dna.compile.regexDnaBasePair))}var b=$(this),c=[];return $.each(b.get(0).attributes,a),c.length>0&&b.addClass("dna-attr").data("dna",c),b},getDataField:function(a,b){return $.trim(a.data("dna-"+b).replace(dna.compile.regexDnaBasePairs,""))},addDataToElems:function(a,b){function c(){var a=$(this),c=a.data("dna-rules")?a.data("dna-rules"):{};c[b]=dna.compile.getDataField(a,b),a.data("dna-rules",c).addClass("dna-data")}return a.filter("[data-dna-"+b+"]").each(c)},template:function(a){var b=a.elem.find("*").addBack();return b.filter(dna.compile.isDnaField).each(dna.compile.field),b.each(dna.compile.attrs),dna.compile.addDataToElems(b,"class"),dna.compile.addDataToElems(b,"require"),dna.compile.addDataToElems(b,"missing"),dna.compile.addDataToElems(b,"truthy"),dna.compile.addDataToElems(b,"falsey"),a.elem.removeClass("dna-template").addClass("dna-clone").addClass(a.name),a.compiled=!0,a}},dna.store={templates:{},stash:function(a,b){function c(){var b=$(this),c=b.parent(),d=c.data("dna-rules")?b.data("dna-rules"):{};d.array=dna.compile.getDataField(b,"array"),c.data("dna-rules",d).addClass("dna-data"),c.data("dna-array-index",b.index()),b.attr("id",a+"-"+d.array+"-instance")}var d=$("#"+a);return b||(d.find("[data-dna-array]").addClass("dna-template").each(c),d.find(".dna-template").each(dna.store.stashNested)),d.hasClass("dna-template")&&(dna.store.templates[a]={name:a,elem:d,container:d.parent().addClass("dna-contains-"+a).data("dna-contains",a),compiled:!1,clones:0}),d.removeAttr("id").detach(),dna.store.templates[a]},stashNested:function(){return dna.store.stash($(this).attr("id"),!0)},getTemplate:function(a){var b=dna.store.templates[a]||dna.store.stash(a);return b||dna.core.berserk("Template not found: "+a),b.compiled||dna.compile.template(b),b}},dna.events={ready:!1,runner:function(a,b){return a=a.closest("[data-dna-"+b+"]"),dna.util.call(a.data("dna-"+b),a)},click:function(a){return dna.events.runner($(a.target),"click")},change:function(a){return dna.events.runner($(a.target),"change")},setup:function(){$(document).click(dna.events.click).change(dna.events.change),dna.events.ready=!0}},dna.core={inject:function(a,b,c,d){function e(){function a(a){return-1!==["string","number","boolean"].indexOf(typeof a)}var e=$(this),f=e.data("dna-field"),g="object"==typeof b?dna.util.value(b,f):"[count]"===f?c:"[value]"===f?b:null;a(g)&&(e=d.html?e.html(g):e.text(g))}function f(){var a=$(this);g=$(this).data("dna");for(var c=0;c "+a}},dna.api={clone:function(a,b,c){var d={fade:!1,top:!1,holder:null,empty:!1,html:!1,callback:null};$.extend(d,c),dna.events.ready||dna.events.setup();var e=dna.store.getTemplate(a);d.empty&&dna.api.empty(a);for(var f=b instanceof Array?b:[b],g=$(),h=0;h