var function_of_context=/function[^\(]*\([ ]*context/i;var contextsubst=/^@|{.+}/;var XAPI={};var xapi=function(){};function event_delegation_handler(_event)
{var event=jQuery.event.fix(_event);var key,handler,target=event.target;handler=(key=target.id)&&eventing.byid[key]||(key=$(target).attr("lfuid"))&&eventing.byclass[key];if(!handler)
{var el=$(target).parents("a:first")[0];if(el)
handler=(key=el.id)&&eventing.byid[key]||(key=$(el).attr("lfuid"))&&eventing.byclass[key];}
if(handler)
{handler(event);}}
xapi.prototype={select:function(id)
{var selid=".api_"+this.name+(id?"[api_id="+id+"]":"");return $(selid);},redraw:function()
{var context;if(arguments.length==1){context=arguments[0];}else if(arguments.length==2){var id=arguments[0];context=arguments[1];}else if(arguments.length==0){return;}
var previous=this.select(id);var aux=$("<div style='display:none'></div>").insertBefore(previous.eq(0));previous.remove();aux.xyz(this.template,context,"after");aux.remove();}};function xyz_node(init)
{this.tag=init.tag;this.classes=init.classes||[];this.id=init.id;this.extra=init.extra||"";this.attributes=init.attributes||{};this.dynattributes=init.dynattributes||{};this.children=[];};function xyz_t(elements)
{this.elements=[];};xyz_t.prototype.innerhtml=function(){this.marker=true;return this;};xyz_t.prototype.when=function(condition)
{this["condition"]=context_evaluator(condition);return this;};xyz_t.prototype.pass=function(arg)
{var temp;var datatype,evaluator;var splitsy=arg.split("=");if(splitsy.length==2)
datatype=splitsy[0];if(splitsy.length>1)
{if(splitsy[1].search(":")==0)
evaluator=eval("temp=function(context){return("+splitsy[1].substr(1)+");}");else
evaluator=context_evaluator(arg);}else
evaluator=context_evaluator(arg);this.context_change={"datatype":datatype,"evaluator":evaluator};return this;};xyz_t.prototype.redraw=function(time,draw_again)
{var template=this;this.elements.push(function(context)
{if(!template.redraw_data)template.redraw_data={};template.redraw_data[context.post.id]=context;if(!template.redraw_timer_id)
{var tid=setInterval(function()
{var deletem=[];var rcount=0;for(var i in template.redraw_data)
{rcount++;var e=template.redraw_data[i];template.API.redraw(e.post.id,e);if(template.condition&&!template.condition(e))
{if(draw_again)
{template.when("false");}
else
{deletem.push(i);rcount--;}}}
for(var i=0,len=deletem.length;i<len;++i)
{delete template.redraw_data[deletem[i]];}
if(!rcount)
{clearTimeout(tid);delete template.redraw_data;}},time);template.redraw_timer_id=tid;}});return this;};xyz_t.prototype.api=function(name,id_def)
{this.api_name=name;this.api_id_def=id_def;var iddefgetter;if(id_def)iddefgetter=replacestring("{"+id_def+"}");for(var i=0,j=this.elements.length;i<j;i++)
{var e=this.elements[i];e.classes.push("api_"+name);if(id_def)e.dynattributes["api_id"]=iddefgetter;}
var n=new xapi();n.name=name;n.template=this;XAPI[name]=n;this.API=n;return this;};function tag_extractor(e)
{var ret={};var defpos=e.search(/[a-z_]*[=]|$/);var tag_id_classes=e.substr(0,defpos).match(/^[_a-z0-9]*|[.#][_a-z-0-9]*/g);var extra=$.trim(e.substr(defpos));for(var xi=0,xlen=tag_id_classes.length;xi<xlen;++xi){var e=tag_id_classes[xi];if(e.charAt(0)=="."){var name=e.substr(1);ret.classes?ret.classes.push(name):ret.classes=[name];continue;}
if(e.charAt(0)=="#"){ret.id=e.substr(1);continue;}
ret.tag=e;}
if(extra.length>0){ret._extra=extra;ret.attributes={};var attrs=extra.match(/[a-z][a-z0-9_]*=\"[a-z0-9-_:;,.()\'\/ #]*\"/gi);if(!attrs)attrs=extra.match(/[a-z][a-z0-9_]*='[a-z0-9-_:;\',.()\/ #]*'/gi);if(!attrs)return ret;for(var i=0,alen=attrs.length;i<alen;++i){var e=attrs[i].split("=");if(e[0]=='name'||(e[0]=='type'&&ret.tag=='input')){ret.extra=extra;continue;}
var ev=e[1].slice(1,-1);ret.attributes[e[0]]=ev;}}
return ret;};var fake_class_counter=0;function process_stuff(t)
{var input=t.elements;var ilen=input.length;for(var i=0;i<ilen;i++){var e=input[i];if(e.constructor==String){e=replacestring(e);input[i]=e;continue;}
if(e.constructor==xyz_node)
{var deleted=[];var click_delegation=null;for(var ii in e.attributes)
{var value=e.attributes[ii];if(!value||!ii)continue;if(ii=="click")
{caught=false;var classes=e.classes.join(" ");if(window.xpost&&xpost.eventDelegation)
{if(e.id){eventing.byid[e.id]=value;caught=true;}
else{click_delegation="lfuiclass"+fake_class_counter++;eventing.byclass[click_delegation]=value;caught=true;}}
if(caught){deleted.push(ii);continue;}}
if(typeof value=="function"&&ii in jQuery.fn){e.domEvents=e.domEvents||{};e.domEvents[ii]=value;deleted.push(ii);continue;}
if(value.constructor==String)
{if(value.search(contextsubst)<0)continue;value=replacestring(value);if(value.constructor==Function){deleted.push(ii);e.dynattributes[ii]=value;}}}
if(click_delegation)
e.attributes["lfuid"]=click_delegation;for(var di=0;di<deleted.length;di++)delete e.attributes[deleted[di]];if(e.domEvents){var devents=e.domEvents;bindcounter++;e.bindcounter=bindcounter;bindfuncs[bindcounter]=e.bindDomEvents=function(event){var $this=$(event.target);$this.removeAttr("onmouseover");$this.unbind("mouseover");for(var de in devents){$this.bind(de,devents[de]);}
if("mouseover"in devents)
setTimeout(function(){devents["mouseover"](event);},0);}}}}
t.processed=true;};function _()
{var input=arguments;var arglen=arguments.length;var node=null;var ret=new xyz_t();var list=ret.elements;for(var ei=0;ei<arglen;ei++)
{var e=input[ei];if(!e)continue;if(e.constructor==String){if(e.search(contextsubst)<0)
{node=e=new xyz_node(tag_extractor(e));}
list.push(e);continue;}
if(e.constructor==Object){for(var i in e)
{var v=e[i];if(typeof v=="function"&&v.toString().search(function_of_context)==0)
node.dynattributes[i]=v;else
node.attributes[i]=v;}
continue;}
if(e.constructor==Array){var children=arguments.callee.apply(this,e);if(!node){alert("xyz failed");return;}
node.children=node.children.concat(children);continue;}
if(e.constructor==Function||e.constructor==xyz_node||e.constructor==xyz_t||e.constructor==LogicSelector)
{list.push(e);continue;}}
process_stuff(ret);return ret;};jQuery.fn.xyz=function(template,context,_func)
{window.marker=0;return xyz2(template,context,this,_func);};var c0=0,c1=0,domtext=[],eventing={byid:{},byclass:{}};bindfuncs=[];bindcounter=0;function $X(e,context)
{domtext.push("<",e.tag);var classes=e.classes.join(" ");if(e.id)domtext.push(" id=\"",e.id,"\"");if(e.api_name)domtext.push(" class=\"api_",classes,"\"");if(e.classes.length)
{domtext.push(" class=\"",classes,"\"");}
var text="";for(ci in e.attributes)
{var v=e.attributes[ci];if(ci=="html"||ci=="text")
{if(typeof v=="function")v=v(context);text+=v;}else
{if(!(ci in jQuery.fn))
{if(typeof v=="function")v=v(context);if(v)domtext.push(' ',ci,'="',v,'"');}else{}}}
for(ci in e.dynattributes)
{var v=e.dynattributes[ci];if(ci=="html"||ci=="text")
{if(typeof v=="function")v=v(context);text+=v;}else
{if(!(ci in jQuery.fn))
{if(typeof v=="function")v=v(context);if(v)domtext.push(' ',ci,'="',v,'"');}}}
if(e.bindDomEvents){domtext.push(" onmouseover='bindfuncs[",e.bindcounter,"]({target:this});'");}
domtext.push(">",text);}
function xyz2(template,context,parent,_func)
{var action=_func||"append";var input=template;if(input.constructor==xyz_t)input=input.elements;if(template.context_change)
{var c={};var ev=template.context_change.evaluator(context);if(ev)
{var dt=ev.datatype||template.context_change.datatype||typeof(ev);if(dt)
{c[dt]=ev;}}
context=c;}
if(template.condition){if(!template.condition(context))return;}
if(template.marker){if(window.marker==0)domtext=[];window.marker+=1;}
var ilen=input.length;for(var ii=0;ii<ilen;ii++){var e=input[ii];if(e.constructor==Function){var e=e(context);if(!e)continue;}
if(e.constructor==LogicSelector){var e=e.process(context);if(!e)continue;}
if(e.constructor==xyz_node)
{if(window.marker)
$X(e,context);else
{var x4=["<",e.tag," ",e.extra?e.extra:"",">"].join("");var o=(e.extra)?(c0++,jQuery(x4)):(c1++,$(document.createElement(e.tag)));if(e.id)o.attr("id",e.id);for(var ci=0;ci<e.classes.length;ci++)o.addClass(e.classes[ci]);if(e.bindDomEvents){for(var de in e.domEvents){o.bind(de,e.domEvents[de]);}}
for(ci in e.attributes)
{var v=e.attributes[ci];var oci=o[ci];if(oci)
{if(typeof oci!="function")
{o.attr(ci,v);}else
{o[ci](v);}}else
o.attr(ci,v);}
for(ci in e.dynattributes)
{var v=e.dynattributes[ci](context);if(o[ci])
o[ci](v);else
o.attr(ci,v);}}
arguments.callee(e.children,context,o);if(window.marker)
domtext.push("</",e.tag,">");else
if(parent)
parent[action](o);continue;}
if(e.constructor==xyz_t){arguments.callee(e,context,parent);continue;}
if(e.constructor==String){if(window.marker)
domtext.push(e);else
parent[action](e);continue;}
console.log("?",e,e.constructor,e.toString());}
if(template.marker){window.marker-=1;if(window.marker==0)parent.append(domtext.join(''));}
return parent;};function contextualize(string)
{var parts=string.match(/[a-z0-9._:$]+|[^a-z0-9._:$]+/gi);for(var i=0,j=parts.length;i<j;++i)
{var part=parts[i];var vardef=part.search(/[a-z_$:]/i);if(vardef>=0)
{if(part.charAt(vardef)!=":")
parts[i]="context."+part;else
parts[i]=part.substring(1);}}
return parts.join("");};evaluator_cache={};function context_evaluator(arg)
{if(evaluator_cache[arg])return evaluator_cache[arg];var temp;var f=eval("temp=function(context){return ("+contextualize(arg)+");}");evaluator_cache[arg]=f;return f;};function replacestring(string)
{var re=/(?!^@)((?!{)[^{}]+(?!^}))|{|}/gi;var matches=string.match(re);var state=0;var xstring="[";var first=true;for(var i=0,j=matches.length;i<j;++i)
{var val=matches[i];if(val=="@")continue;if(state==0)
{if(val=="{"){state=1;continue;}
if(!first)xstring+=",";xstring+="'"+val+"'";first=false;}else
{if(val=="}"){state=0;continue;}
if(!first)xstring+=",";var varparts=val.split("|");var fin=varparts[0];if(fin.search(":")!=0)
fin="context."+fin;else
fin=fin.substr(1);for(var p=1;p<varparts.length;p++)
{var vp=varparts[p];if(vp.charAt(0)==":")
fin="window."+vp.substr(1)+"("+fin+")";else
fin="jsfilters."+vp+"("+fin+")";}
xstring+=fin;first=false;}}
xstring+="]";var localdef;return eval("localdef=function(context){var a="+xstring+";for(var i=0;i<a.length;i++) if(a[i]==undefined) return; return a.join('');}");};function LogicSelector()
{this.logic=[];this.src=arguments;var l=this.src.length;for(var i=0;i<l;i++){var e=this.src[i];if(!("condition"in e)){this.Default=context_evaluator(e.result);continue;}
var choice={condition:context_evaluator(e.condition),result:context_evaluator(e.result)};this.logic.push(choice);}}
LogicSelector.prototype.process=function(context){var l=this.logic.length;for(var i=0;i<l;i++){var e=this.logic[i];if(e.condition(context))return e.result(context);}
return this.Default(context);};