this.jsviews||this.jQuery&&jQuery.views||(function(global,undefined){var versionNumber="v1.0pre",$,rTag,rTmplString,$extend,delimOpenChar0="{",delimOpenChar1="{",delimCloseChar0="}",delimCloseChar1="}",$viewsSub={},FALSE=!1,TRUE=!0,jQuery=global.jQuery,rPath=/^(?:null|true|false|\d[\d.]*|([\w$]+|~([\w$]+)|#(view|([\w$]+))?)([\w$.]*?)(?:[.[]([\w$]+)\]?)?|(['"]).*\8)$/g,rParams=/(\()(?=|\s*\()|(?:([([])\s*)?(?:([#~]?[\w$.]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*!:?\/]|(=))\s*|([#~]?[\w$.]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*([)\]])([([]?))|(\s+)/g,rNewLine=/\r?\n/g,rUnescapeQuotes=/\\(['"])/g,rEscapeQuotes=/\\?(['"])/g,rBuildHash=/\x08(~)?([^\x08]+)\x08/g,autoTmplName=0,escapeMapForHtml={"&":"&","<":"<",">":">"},tmplAttr="data-jsv-tmpl",fnDeclStr="var j=j||"+(jQuery?"jQuery.":"js")+"views,",htmlSpecialChar=/[\x00"&'<>]/g,slice=Array.prototype.slice,$render={},$views={jsviews:versionNumber,sub:$viewsSub,debugMode:TRUE,render:$render,templates:$templates,tags:$viewsTags,helpers:$viewsHelpers,converters:$viewsConverters,delimiters:$viewsDelimiters,View:View,_convert:convert,_err:function(e){return $views.debugMode?("Error: "+(e.message||e))+". ":'""'},_tmplFn:tmplFn,_tag:renderTag,error:error,Error:JsViewsError};function JsViewsError(message){this.name="JsRender Error",this.message=message||"JsRender error"}(JsViewsError.prototype=new Error()).constructor=JsViewsError;function $viewsDelimiters(openChars,closeChars){if(!$views.rTag||arguments.length){delimOpenChar0=openChars?"\\"+openChars.charAt(0):delimOpenChar0;delimOpenChar1=openChars?"\\"+openChars.charAt(1):delimOpenChar1;delimCloseChar0=closeChars?"\\"+closeChars.charAt(0):delimCloseChar0;delimCloseChar1=closeChars?"\\"+closeChars.charAt(0):delimCloseChar1;$views.rTag=rTag="(?:(?:(\\w+(?=[\\/\\s"+delimCloseChar0+"]))|(?:(\\w+)?(:)|(>)|(\\*)))"+"\\s*((?:[^"+delimCloseChar0+"]|"+delimCloseChar0+"(?!"+delimCloseChar1+"))*?)";rTag=new RegExp(delimOpenChar0+delimOpenChar1+rTag+"(\\/)?|(?:\\/(\\w+)))"+delimCloseChar0+delimCloseChar1,"g");rTmplString=new RegExp("<.*>|([^\\\\]|^)[{}]|"+delimOpenChar0+delimOpenChar1+".*"+delimCloseChar0+delimCloseChar1)} return[delimOpenChar0,delimOpenChar1,delimCloseChar0,delimCloseChar1]} function getHelper(helper){var view=this,tmplHelpers=view.tmpl.helpers||{};helper=(view.ctx[helper]!==undefined?view.ctx:tmplHelpers[helper]!==undefined?tmplHelpers:$viewsHelpers[helper]!==undefined?$viewsHelpers:{})[helper];return typeof helper!=="function"?helper:function(){return helper.apply(view,arguments)}} function convert(converter,view,tmpl,text){var tmplConverter=tmpl.converters;tmplConverter=tmplConverter&&tmplConverter[converter]||$viewsConverters[converter];return tmplConverter?tmplConverter.call(view,text):(error("Unknown converter: {{"+converter+":"),text)} function renderTag(tag,parentView,parentTmpl,converter,content,tagInstance){var ret,tmplTags=parentTmpl.tags,nestedTemplates=parentTmpl.templates,props=tagInstance.props=tagInstance.props||{},tmpl=props.tmpl,args=arguments.length>6?slice.call(arguments,6):[],tagFn=tmplTags&&tmplTags[tag]||$viewsTags[tag];if(!tagFn){error("Unknown tag: {{"+tag+"}}");return ""} if(tmpl){delete props.tmpl} content=content&&parentTmpl.tmpls[content-1];tmpl=tmpl||content||undefined;tagInstance.tmpl=""+tmpl===tmpl?nestedTemplates&&nestedTemplates[tmpl]||$templates[tmpl]||$templates(tmpl):tmpl;tagInstance.isTag=TRUE;tagInstance.converter=converter;tagInstance.view=parentView;tagInstance.renderContent=renderContent;ret=tagFn.apply(tagInstance,args);return ret||(ret==undefined?"":ret.toString())} function View(context,path,parentView,data,template,key,onRender,isArray){var views,self={tmpl:template,path:path,parent:parentView,data:data,ctx:context,views:isArray?[]:{},_useKey:isArray?0:1,_hlp:getHelper,_onRender:onRender};if(parentView){views=parentView.views;if(parentView._useKey){views[self.key="_"+parentView._useKey++]=self;self.index=parentView.index}else{views.splice(self.key=self.index=key!==undefined?key:views.length,0,self)}} return self} function addToStore(self,store,name,item,process){var key,onStore;if(name&&typeof name==="object"&&!name.nodeType){for(key in name){store(key,name[key])} return self} if(!name||item===undefined){if(process){item=process(undefined,item||name)}}else if(""+name===name){if(item===null){delete store[name]}else if(item=process?process(name,item):item){store[name]=item}} if(onStore=$viewsSub.onStoreItem){onStore(store,name,item,process)} return item} function $templates(name,tmpl){return addToStore(this,$templates,name,tmpl,compile)} function $viewsTags(name,tagFn){return addToStore(this,$viewsTags,name,tagFn)} function $viewsHelpers(name,helperFn){return addToStore(this,$viewsHelpers,name,helperFn)} function $viewsConverters(name,converterFn){return addToStore(this,$viewsConverters,name,converterFn)} function renderContent(data,context,parentView,key,isLayout,path,onRender){var i,l,dataItem,newView,itemResult,parentContext,tmpl,props,swapContent,mergedCtx,self=this,result="";if(key===TRUE){swapContent=TRUE;key=0} if(self.isTag){tmpl=self.tmpl;if(context||self.ctx){mergedCtx={};if(self.ctx){$extend(mergedCtx,self.ctx)} if(context){$extend(mergedCtx,context)}} context=mergedCtx;props=self.props;if(props&&props.link===FALSE){context=context||{};context.link=FALSE} parentView=parentView||self.view;path=path||self.path;key=key||self.key}else{tmpl=self.jquery&&(self[0]||error('Unknown template: "'+self.selector+'"'))||self} if(tmpl){if(parentView){parentContext=parentView.ctx;if(data===parentView){data=parentView.data;isLayout=TRUE} onRender=onRender||parentView._onRender}else{parentContext=$viewsHelpers} context=(context&&context!==parentContext)?$extend($extend({},parentContext),context):parentContext;if(!tmpl.fn){tmpl=$templates[tmpl]||$templates(tmpl)} if(tmpl){onRender=context.link!==FALSE&&onRender;if($.isArray(data)&&!isLayout){newView=swapContent?parentView:(key!==undefined&&parentView)||View(context,path,parentView,data,tmpl,key,onRender,TRUE);for(i=0,l=data.length;i-1;code+=(tag===":"?(converter==="html"?(hasEncoder=TRUE,"e("+params):converter?(hasConverter=TRUE,'c("'+converter+'",view,this,'+params):(getsValue=TRUE,"((v="+params+')!=u?v:""')):(hasTag=TRUE,'t("'+tag+'",view,this,"'+(converter||"")+'",'+(content?nested.length:'""')+","+hash+(params?",":"")+params))+")+"}}} code=fnDeclStr+(getsValue?"v,":"")+(hasTag?"t=j._tag,":"")+(hasConverter?"c=j._convert,":"")+(hasEncoder?"e=j.converters.html,":"")+"ret; try{\n\n"+(tmplOptions.debug?"debugger;":"")+(allowCode?'ret=':'return ')+code.slice(0,-1)+";\n\n"+(allowCode?"return ret;":"")+"}catch(e){return j._err(e);}";try{code=new Function("data, view, j, b, u",code)}catch(e){syntaxError("Compiled template code:\n\n"+code,e)} if(tmpl){tmpl.fn=code} return code} function parseParams(params,bind){var named,fnCall={},parenDepth=0,quoted=FALSE,aposed=FALSE;function parseTokens(all,lftPrn0,lftPrn,path,operator,err,eq,path2,prn,comma,lftPrn2,apos,quot,rtPrn,prn2,space){operator=operator||"";lftPrn=lftPrn||lftPrn0||lftPrn2;path=path||path2;prn=prn||prn2||"";operator=operator||"";var bindParam=bind&&prn!=="(";function parsePath(all,object,helper,view,viewProperty,pathTokens,leafToken){if(object){var leaf,ret=(helper?'view._hlp("'+helper+'")':view?"view":"data")+(leafToken?(viewProperty?"."+viewProperty:helper?"":(view?"":"."+object))+(pathTokens||""):(leafToken=helper?"":view?viewProperty||"":object,""));leaf=(leafToken?"."+leafToken:"") if(!bindParam){ret=ret+leaf} ret=ret.slice(0,9)==="view.data"?ret.slice(5):ret;if(bindParam){ret="b("+ret+',"'+leafToken+'")'+leaf} return ret} return all} if(err){syntaxError(params)}else{return(aposed?(aposed=!apos,(aposed?all:'"')):quoted?(quoted=!quot,(quoted?all:'"')):((lftPrn?(parenDepth++,lftPrn):"")+(space?(parenDepth?"":named?(named=FALSE,"\b"):","):eq?(parenDepth&&syntaxError(params),named=TRUE,'\b'+path+':'):path?(path.replace(rPath,parsePath)+(prn?(fnCall[++parenDepth]=TRUE,prn):operator)):operator?operator:rtPrn?((fnCall[parenDepth--]=FALSE,rtPrn)+(prn?(fnCall[++parenDepth]=TRUE,prn):"")):comma?(fnCall[parenDepth]||syntaxError(params),","):lftPrn0?"":(aposed=apos,quoted=quot,'"'))))}} params=(params+" ").replace(rParams,parseTokens);return params} function compile(name,tmpl,parent,options){var tmplOrMarkup,elem,key,nested,nestedItem;function tmplOrMarkupFromStr(value){if((""+value===value)||value.nodeType>0){try{elem=value.nodeType>0?value:!rTmplString.test(value)&&jQuery&&jQuery(value)[0]}catch(e){} if(elem){if(!elem.type){return} value=$templates[elem.getAttribute(tmplAttr)];if(!value){name=name||"_"+autoTmplName++;elem.setAttribute(tmplAttr,name);value=compile(name,elem.innerHTML,parent,options);$templates[name]=value}} return value}} tmpl=tmpl||"";tmplOrMarkup=tmplOrMarkupFromStr(tmpl);options=options||(tmpl.markup?tmpl:{});options.name=name;nested=options.templates;if(!tmplOrMarkup&&tmpl.markup&&(tmplOrMarkup=tmplOrMarkupFromStr(tmpl.markup))){if(tmplOrMarkup.fn&&(tmplOrMarkup.debug!==tmpl.debug||tmplOrMarkup.allowCode!==tmpl.allowCode)){tmplOrMarkup=tmplOrMarkup.markup}} if(tmplOrMarkup!==undefined){if(name&&!parent){$render[name]=function(){return tmpl.render.apply(tmpl,arguments)}} if(tmplOrMarkup.fn||tmpl.fn){if(tmplOrMarkup.fn){if(name&&name!==tmplOrMarkup.name){tmpl=$extend($extend({},tmplOrMarkup),options)}else{tmpl=tmplOrMarkup}}}else{tmpl=TmplObject(tmplOrMarkup,options,parent,0);tmplFn(tmplOrMarkup,tmpl)} for(key in nested){nestedItem=nested[key];if(nestedItem.name!==key){nested[key]=compile(key,nestedItem,tmpl)}} return tmpl}} function TmplObject(markup,options,parent,key){function extendStore(storeName){if(parent[storeName]){tmpl[storeName]=$extend($extend({},parent[storeName]),options[storeName])}} options=options||{};var tmpl={markup:markup,tmpls:[],links:[],render:renderContent};if(parent){if(parent.templates){tmpl.templates=$extend($extend({},parent.templates),options.templates)} tmpl.parent=parent;tmpl.name=parent.name+"["+key+"]";tmpl.key=key} $extend(tmpl,options);if(parent){extendStore("templates");extendStore("tags");extendStore("helpers");extendStore("converters")} return tmpl} if(jQuery){$=jQuery;$.templates=$templates;$.render=$render;$.views=$views;$.fn.render=renderContent}else{$=global.jsviews=$views;$.extend=function(target,source){var name;target=target||{};for(name in source){target[name]=source[name]} return target};$.isArray=Array&&Array.isArray||function(obj){return Object.prototype.toString.call(obj)==="[object Array]"}} $extend=$.extend;function replacerForHtml(ch){return escapeMapForHtml[ch]||(escapeMapForHtml[ch]="&#"+ch.charCodeAt(0)+";")} $viewsTags({"if":function(){var ifTag=this,view=ifTag.view;view.onElse=function(tagInstance,args){var i=0,l=args.length;while(l&&!args[i++]){if(i===l){return ""}} view.onElse=undefined;tagInstance.path="";return tagInstance.renderContent(view)};return view.onElse(this,arguments)},"else":function(){var view=this.view;return view.onElse?view.onElse(this,arguments):""},"for":function(){var i,self=this,result="",args=arguments,l=args.length;if(l===0){l=1} for(i=0;i