(function(a){a.fn.dataTemplate=function(i){var b=a.extend({},i),d=this.data('portal-domParent');if(d)return;var c=b.itemTemplate?this.find(b.itemTemplate):a(this.children(':not(thead, tfoot)')[0]);if(c&&c.is('tbody'))c=c.find('tr:first');var g=this.find(b.seperatorTemplate),f=this.find(b.emptyTemplate),e=this.find(b.alternatingTemplate);if(c.length===0)throw this.selector+': No itemTemplate specified and/or element has no children';d=c.parent();this.data('portal-domParent',d);this.data('portal-templateOptions',b);this.data('portal-templateHtml',c.wrap('<div></div>').parent().html());g.length>0&&this.data('portal-seperatorHtml',g.wrap('<div></div>').parent().html());f.length>0&&this.data('portal-emptyHtml',f.wrap('<div></div>').parent().html());e.length>0&&this.data('portal-alternatingHtml',e.wrap('<div></div>').parent().html());if(b.events)for(var h in b.events)d.bind(h,function(d){var c=a(d.target).closest('.portal-dataItem'),e=b.events[h];if(c.length===0)return e(d,null,null);return e(d,c.data('portal-data'),c)});!b.keepDefault&&d.empty();return this};a.fn.dataBind=function(b,j){function m(a){for(var b in a)if(a.hasOwnProperty(b))return false;return true}function k(i,d,b,c){var j=/\{\w+\}/g;b.data('portal-data',d);b.addClass('portal-dataItem');var f=function(b,a,d,h,i,g){var e=function(a,b){if(g&&g!=='text')a.attr(g,b);else a.html(b)},k=function(a){var b=a.match(j);if(b)for(var e=0;e<b.length;e++){var c=b[e];a=a.replace(c,d[c.substring(1,c.length-1)])}return a};if(typeof a==='string')e(b,k(a));else if(typeof a==='object')for(var c in a){if(c==='style'){if(typeof a[c]==='object')b.css(a[c]);else typeof a[c]==='function'&&b.css(a[c]({data:d,elem:b,item:i,i:h}));continue}f(b,a[c],d,h,i,c)}else if(typeof a==='function')e(b,a({data:d,elem:b,item:i,i:h}));else e(b,a)};for(var e in d)if(!c||!c[e]){var g=a(b.find('.'+e));if(g.length===0&&b.hasClass(e))g=b;g.text(d[e])}for(var h in c)f(a(b.find('.'+h)),c[h],d,i,b);delete f}var e=this.data('portal-domParent');if(!e){this.dataTemplate();e=this.data('portal-domParent')}if(!b||!b.length&&m(b)||b.length===0||b.length>0&&m(b[0])){e.empty();return this}var h=this.data('portal-templateHtml'),l=this.data('portal-seperatorHtml'),f=this.data('portal-templateOptions'),c,g=e.clone();if(!j)c=a(g.html(h).children()[0]);else if(j==='append')c=g.append(h).children(':last');else if(j==='prepend')c=a(g.prepend(h).children()[0]);var i=f.itemBound&&typeof f.itemBound==='function'?f.itemBound:null;if(!b.length){k(0,b,c,f.format);i&&i(c,b,0)}else for(var d=0;d<b.length;d++){k(d,b[d],c,f.format);i&&i(c,b[d],d);if(d<b.length-1){if(l)c=c.after(l).next();c=c.after(h).next()}}e.empty().append(g.children());return this}})(jQuery)