IBDOM={Config:{debug:false,ATTRIBUTE_BLANK_VALUE:"",ELEMENT_BLANK_VALUE:"N/A",USE_FORKED_LOOP_EXECUTION:true},NodeTypes:{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_NODE:4},DataTypes:{Handlers:{defaultHandler:function(v){return v}},Defs:{NUMBER:{handler:function(num){return IBDOM.Utils.getFormattedNumber(num)}},NUMBER_ROUNDED_NO_ZEROES:{handler:function(num){return IBDOM.Utils.getFormattedNumber(num,false,true)}}},getType:function(s){if(s){return this.Defs[s.toUpperCase()]}else{return{handler:function(){return IBDOM.DataTypes.Handlers.defaultHandler.apply(this,arguments)}}}}},Utils:{mapToString:function(filter){buff=new IBDOM.Utils.StringBuffer();for(k in this){if(typeof (this[k])=="boolean"){if(!filter||(filter&&(k!=filter))){buff.append(k)}}}return buff.toString(this.separator)},toStringFilter:function(s){return this.toString(s)},processTemplate:function(t){t.populateFromDataBean({},false,true).cloneNodeAugmented(true).metaCache.processed=true},Cache:function(){_a=arguments;this.collection={};this.array=[];this.aCount=0;this.keyGetter=_a[0];this.valueGetter=_a[1];this.returnValueWrapper=_a[2];this.get=function(){key=this.keyGetter.apply(this,arguments);if(key){value=this.collection[key];if(!value){value=this.collection[key]=this.valueGetter.apply(this,arguments);value.aCountValue=this.aCount;this.array[this.aCount]=value;this.aCount++}return((w=this.returnValueWrapper)?w(value):value)}else{IBDOM.Utils.debug("No key returned");return null}};this.remove=function(){key=this.keyGetter.apply(this,arguments);if(key){v=this.collection[key];if(v){delete this.array[v.aCountValue];delete this.collection[key]}}};this.inspect=function(){b=new IBDOM.Utils.StringBuffer();for(p in this.collection){b.append(p).append(": ").append(this.collection[p].toString()).append("\n")}return b.toString()}},forkedLoopExecution:function(){var config=arguments[0];currentCollectionObject=config.collection[config.currentCollectionIndex];if(currentCollectionObject){config.actionToPerform.apply(config.objectToActOn,config.actionToPerformStaticParameters.concat([currentCollectionObject,config.currentCollectionIndex]));if(!config.collection.execTs){config.collection.execTs=(new Date()).getTime()}if(!IBDOM.Utils.CURRENT_EXECUTION[config.objectToActOn]){IBDOM.Utils.CURRENT_EXECUTION[config.objectToActOn]=config.collection.execTs}else{if(IBDOM.Utils.CURRENT_EXECUTION[config.objectToActOn]<config.collection.execTs){IBDOM.Utils.CURRENT_EXECUTION[config.objectToActOn]=config.collection.execTs}}if(IBDOM.Utils.CURRENT_EXECUTION[config.objectToActOn]==config.collection.execTs){window.setTimeout(function(){IBDOM.Utils.forkedLoopExecution({collection:config.collection,currentCollectionIndex:config.currentCollectionIndex+1,actionToPerformStaticParameters:config.actionToPerformStaticParameters,actionToPerform:config.actionToPerform,objectToActOn:config.objectToActOn,postProcessingAction:config.postProcessingAction})},0)}}else{if((config.currentCollectionIndex!=0)){if(config.postProcessingAction){config.postProcessingAction.apply(config.objectToActOn,config.actionToPerformStaticParameters)}}}},scape:function(s){return(window.encodeURIComponent?window.encodeURIComponent(s):escape(s))},getElement:function(ioo){theElement=(typeof (ioo)!="object")?document.getElementById(ioo):ioo;if(theElement){return IBDOM.IBElement.getAugmentedElement(theElement)}else{return null}},isCollection:function(d){return(d&&((l=d.length)||(l==0))&&(!isNaN(l)))},getFormattedNumber:function(p,numDec,intRound){tenPow=intRound?1:(numDec?Math.pow(10,numDec):1);p=Math.round(p*tenPow)/tenPow;if(numDec){p=(p+1/Math.pow(10,(numDec+1)))}p=p+"";decIndex=p.indexOf(".");if(decIndex!=-1){intpart=p.substring(0,decIndex)}else{intpart=p}if(intpart.length>3){formattedIntPart=new IBDOM.Utils.StringBuffer();ccount=intpart.length-1;poscount=1;while((c=intpart.charAt(ccount))){formattedIntPart.append(c);if((ccount!=0)&&((poscount%3)==0)){formattedIntPart.append(",")}ccount--;poscount++}formattedIntPart.__strings__.reverse();formattedIntPart=formattedIntPart.toString()}else{formattedIntPart=intpart}if(decIndex!=-1){decpart=p.substring(decIndex+1,decIndex+(numDec+1));return(formattedIntPart+"."+decpart)}else{return formattedIntPart}},getString:function(ar){return ar?ar.join(""):""},StringBuffer:function(arr){if(arr){this.__strings__=arr}else{this.__strings__=new Array}this.append=function(str){this.__strings__.push(str);return this};this.toString=function(separator){if(this.__strings__&&this.__strings__.join){if(!separator){separator=""}return this.__strings__.join(separator)}else{return""}}},getDataKey:function(dataString){if(dataString&&(typeof (dataString)=="string")){dataString=dataString.trim();dataValue=dataString.split("data:")[1];if(dataValue){dv=dataValue.split(":type:");return{propName:dv[0],dataType:IBDOM.DataTypes.getType(dv[1])}}else{return null}}else{return null}},getConditionalClassDirective:function(nodeRef,doNotRemoveClass){classDirectiveString=IBDOM.IBElement.methods.getFirstPartialClassValue.apply(nodeRef,["setclass"]);if(classDirectiveString){if(!doNotRemoveClass){IBDOM.IBElement.methods.unsetClassValue.apply(nodeRef,[classDirectiveString])}ccds=classDirectiveString.split("{if}");ccd_class=ccds[0].split(":")[1];ccd_condition=ccds[1];return{condition:ccd_condition,theClass:ccd_class}}else{return null}},getAttrDataMap:function(el){attrs=el.attributes;adm={};for(ac=0;(attrs&&(att=attrs[ac]));ac++){if(!adm[att.nodeName]){if((att.nodeValue!=null)&&el.getAttribute(att.nodeName)&&(dataKey=IBDOM.Utils.getDataKey(el.getAttribute(att.nodeName)))){adm[att.nodeName]=dataKey;if(att.nodeName=="name"){IBDOM.Utils.debug("There currently are some weird WIN/IE issues with setting the NAME attribute in the templating mechanism. See FAQ")}}}}return adm},isInsideUnprocessedTemplate:function(innerNode,outerNode){pNode=innerNode;answer=false;while(!answer&&pNode&&(pNode!=outerNode)&&(pNode!=document.body)){if(IBDOM.IBElement.methods.hasClassValue.apply(pNode,["IS_TEMPLATE"])||IBDOM.IBElement.methods.getFirstPartialClassValue.apply(pNode,["template:"])){answer=true}pNode=pNode.parentNode}return answer},debug:function(txt){if(IBDOM.Config.debug){if(oEl=IBDOM.Utils.getElement("ibdom_debug")){oEl.setTextData(txt)}else{alert("Debug Message: "+txt)}}},getMapFromSplit:function(){return IBDOM.Utils.StringSplitMapCache.get.apply(IBDOM.Utils.StringSplitMapCache,arguments)},getWrappedFunction:function(wrapperFunc,wrappeeFunc){if(wrapperFunc){return function(){return wrapperFunc(wrappeeFunc.apply(this,arguments))}}else{return wrappeeFunc}}},Templates:{getTemplate:function(c,t){return IBDOM.Templates.Cache.get(null,null,c,t)},Stashes:{collection:new Array(),populate:function(){if(window.doc){this.collection=doc.gEBCN("templates")}else{alert("'doc' variable not found: look for: doc = IBDOM.IBElement.getAugmentedElement(document);")}},getTemplate:function(classMatch,optionalTagName){theTemplate=null;if(this.collection.length==0){this.populate()}if(this.collection.length==0){alert("You need AT LEAST ONE ELEMENT whose CLASS attribute value is: 'templates'")}for(stashCount=0;!theTemplate&&(stash=this.collection[stashCount]);stashCount++){theTemplate=stash.gFEBCN(classMatch,optionalTagName)}if(!theTemplate){alert("template: "+classMatch+" not found in any stash")}return theTemplate.cloneNodeAugmented(true)}}},IBElement:{methods:{set:function(){return this.setOnlyChild.apply(this,arguments)},setOnlyChild:function(){nodeRef=IBDOM.IBElement.getAugmentedElement(arguments[0]);if(nodeRef){this.removeAllChildren();this.appendChild(nodeRef)}return this},getFirstPartialClassValue:function(v){if(v&&this.className){cMap=IBDOM.Utils.getMapFromSplit(this.className," ");matchClass=null;for(c in cMap){if(c.indexOf(v)!=-1){if(!matchClass){matchClass=c}}}return matchClass}else{return null}},hasClassValue:function(theClass){if(theClass&&this.className){cMap=IBDOM.Utils.getMapFromSplit(this.className," ");return(theClass in cMap)}else{return false}},setClassValue:function(theClass){if(!IBDOM.IBElement.methods.hasClassValue.apply(this,[theClass])){if(this.className){this.className=IBDOM.Utils.getString([this.className," ",theClass])}else{this.className=theClass}}return this},unsetClassValue:function(theClass){if(theClass&&this.className){cMap=IBDOM.Utils.getMapFromSplit(this.className," ");if(theClass in cMap){this.className=cMap.toStringFilter(theClass)}}return this},cloneNodeAugmented:function(){augNode=IBDOM.IBElement.getAugmentedElement(this.cloneNode(arguments[0]));if(this.metaCache){augNode.metaCache=this.metaCache}return augNode},populate:function(tPL){if(IBDOM.Utils.isCollection(tPL)){return this.populateFromBeanCollection.apply(this,arguments)}else{return this.populateFromDataBean.apply(this,arguments)}},populateFromBeanCollection:function(beanCollection,templateProcessor,postProcessor){beanTemplate=IBDOM.Templates.Cache.get(this,"template:repeat");emptyCollectionTemplate=IBDOM.Templates.Cache.get(this,"template:empty_collection");this.removeAllChildren();if(beanCollection&&beanTemplate){if(beanCollection.length>0){if(IBDOM.Config.USE_FORKED_LOOP_EXECUTION){IBDOM.Utils.forkedLoopExecution({collection:beanCollection,currentCollectionIndex:0,actionToPerformStaticParameters:[beanTemplate,templateProcessor],actionToPerform:function(){beanTemplate=arguments[0];templateProcessor=arguments[1];theBean=arguments[2];if(!IBDOM.Utils.isCollection(beanTemplate)){beanTemplate=[beanTemplate]}for(btc=0;bt=beanTemplate[btc];btc++){tplClone=bt.cloneNodeAugmented(true);if(templateProcessor){tplClone.setDataProcessor(templateProcessor)}tplClone.populateFromDataBean(theBean,true);this.appendChild(tplClone)}},objectToActOn:this,postProcessingAction:(postProcessor?postProcessor:null)})}else{for(bc=0;(bean=beanCollection[bc]);bc++){if(!IBDOM.Utils.isCollection(beanTemplate)){beanTemplate=[beanTemplate]}for(btc=0;bt=beanTemplate[btc];btc++){tplClone=bt.cloneNodeAugmented(true);if(templateProcessor){tplClone.setDataProcessor(templateProcessor)}tplClone.populateFromDataBean(bean,true);this.appendChild(tplClone)}}if(postProcessor){postProcessor.apply(this,arguments)}}}else{if(emptyCollectionTemplate){this.appendChild(emptyCollectionTemplate);if(postProcessor){postProcessor.apply(this,arguments)}}}this.unsetClassValue("IB_POPULATE")}else{if(emptyCollectionTemplate){this.appendChild(emptyCollectionTemplate)}IBDOM.Utils.debug("empty bean collection passed or no template found for: "+this.localName)}return this},setDataProcessor:function(dP){this.dataProcessor=dP;return this},setCachedProp:function(ec,el,prop,valueGetterFunc,valueGetterFuncArgs){if(!this.metaCache.processed&&!(prop in this.metaCache[ec])){if(!el[prop]&&!(el[prop]=this.metaCache[ec][prop])){el[prop]=this.metaCache[ec][prop]=valueGetterFunc.apply(el,valueGetterFuncArgs)}}else{el[prop]=this.metaCache[ec][prop]}},populateFromDataBean:function(dataBean,repeatedProcess,dummyRun){if(!this.metaCache){this.metaCache={}}if(dataBean){dataBean.test=function(){return eval(arguments[0])};allKids=this.gEBTN("*");if(allKids.length==0){allKids=[this]}doRoot=true;for(ec=-1;(el=(doRoot?this:allKids[ec]));ec++){if(!this.metaCache[ec]){this.metaCache[ec]={}}if(doRoot){doRoot=false}belongsToInnerTemplate=false;if(dummyRun){belongsToInnerTemplate=true}else{if(!repeatedProcess){belongsToInnerTemplate=IBDOM.Utils.isInsideUnprocessedTemplate(el,this)}}realRun=!belongsToInnerTemplate||dummyRun||repeatedProcess;if(realRun){this.setCachedProp(ec,el,"dataKey",IBDOM.Utils.getDataKey,[el.dataKey?null:IBDOM.IBElement.methods.getTextData.apply(el,[])])}if(realRun){this.setCachedProp(ec,el,"conditionalClass",IBDOM.Utils.getConditionalClassDirective,[el,belongsToInnerTemplate])}if(cc=el.conditionalClass){if(dataBean.test(cc.condition)){IBDOM.IBElement.methods.setClassValue.apply(el,[cc.theClass])}}if((dataKey=el.dataKey)&&(strData=dataBean[dataKey.propName])){IBDOM.IBElement.methods.setTextData.apply(el,[dataKey.dataType.handler(strData)])}else{if(el.dataKey){if(!belongsToInnerTemplate){IBDOM.IBElement.methods.setTextData.apply(el,[IBDOM.Config.ELEMENT_BLANK_VALUE])}}}this.setCachedProp(ec,el,"attrDataMap",IBDOM.Utils.getAttrDataMap,[el]);if(el.attrDataMap){for(mapItemKey in el.attrDataMap){mapItem=el.attrDataMap[mapItemKey];if(mapItem&&(dataKey=mapItem)&&(strData=dataBean[dataKey.propName])){el.setAttribute(mapItemKey,dataKey.dataType.handler(strData))}else{if(mapItem&&(dataKey=mapItem)){if(!belongsToInnerTemplate){el.setAttribute(mapItemKey,IBDOM.Config.ATTRIBUTE_BLANK_VALUE)}}}}}}if(this.dataProcessor){this.dataProcessor.apply(this,arguments)}this.unsetClassValue("IB_POPULATE")}else{IBDOM.Utils.debug("empty data bean passed for: "+this.localName+"\r"+this.innerHTML)}return this},removeAllChildren:function(){while(fc=this.firstChild){this.removeChild(fc)}return this},gEBTN:function(t,ns){if(!ns){ns=""}ebtns=this.getElementsByTagNameNS?this.getElementsByTagNameNS(ns,t):[];return ebtns[0]?ebtns:this.getElementsByTagName(t)},gFEBTN:function(){els=this.gEBTN.apply(this,arguments);return els[0]?IBDOM.IBElement.getAugmentedElement(els[0]):null},gEBCN:function(cName,tagName,getFirstOnly){dels=tagName?this.gEBTN(tagName):this.gEBTN("*");els=new Array();j=0;for(t=0;del=dels[t];t++){if((c=del.className)&&(cName in IBDOM.Utils.getMapFromSplit(c," "))){els[j]=IBDOM.IBElement.getAugmentedElement(del);if(getFirstOnly){break}j++}}if(getFirstOnly){return els[j]}else{return els}},gFEBCN:function(cN,tN){return this.gEBCN(cN,tN,true)},gEBANV:function(attName,attValue,tagName,getFirstOnly){nodeResults=new Array();rcount=0;els=tagName?this.gEBTN(tagName):this.gEBTN("*");if(attName&&attValue){for(i=0;(el=els[i]);i++){el=IBDOM.IBElement.getAugmentedElement(el);if(el.getAttribute&&(el.getAttribute(attName)==attValue)){nodeResults[rcount]=el;if(getFirstOnly){break}rcount++}}}if(getFirstOnly){return nodeResults[rcount]}else{return nodeResults}},gFEBANV:function(){_a=arguments;return this.gEBANV(_a[0],_a[1],_a[2],true)},getTextData:function(){s=new IBDOM.Utils.StringBuffer();c=this.firstChild;while(c){if((c.nodeType==IBDOM.NodeTypes.TEXT_NODE)||(c.nodeType==IBDOM.NodeTypes.CDATA_NODE)){s.append(c.data)}c=c.nextSibling}return s.toString()},setTextData:function(){if(this.removeAllChildren){this.removeAllChildren()}else{IBDOM.IBElement.methods.removeAllChildren.apply(this,arguments)}this.appendChild(doc.createTextNode(arguments[0]));return this},setEvent:function(eventType,func,funcArgs){fPtr=func.apply?func:window[func];this["on"+eventType]=function(){fPtr.apply(this,funcArgs)};return this},setClick:function(func,funcArgs){if(this.href){this.href="javascript:"+func+"("+funcArgs.join(",")+")";return this}else{return this.setEvent("click",_a[0],_a[1])}},replaceWith:function(){newElement=arguments[0];if(this.id){transferId=this.id;this.removeAttribute("id");newElement.setAttribute("id",transferId)}this.parentNode.replaceChild(newElement,this);return newElement},replaceWithTemplate:function(){if(this.id&&this.tagName){return this.replaceWith(IBDOM.Templates.getTemplate(this.id+"_template",this.tagName.toLowerCase()))}else{return null}}},getAugmentedElement:function(node){if(node&&!node._IB_AUGMENTED){methods=this.methods;for(property in methods){value=methods[property];if(typeof value=="function"&&!(property in node)){node[property]=value}}node._IB_AUGMENTED={}}return node}}};IBDOM.Utils.StringSplitMapCache=new IBDOM.Utils.Cache(function(){return arguments[0]},function(str,separator){if(str){arr=str.split(separator);map={};for(i=0;a=arr[i];i++){map[a]=true;map.separator=separator}map.toString=IBDOM.Utils.mapToString;map.toStringFilter=IBDOM.Utils.toStringFilter;return map}else{return{}}});IBDOM.Templates.Cache=new IBDOM.Utils.Cache(function(nodeRef,templateType,passedTplClass,passedTplTagName){key=null;if(nodeRef&&templateType){key=IBDOM.Utils.getString([templateType,"_",(nodeRef.parentNode?nodeRef.parentNode.nodeName:"NOPARENT"),"/",nodeRef.nodeName,"_",nodeRef.id])}else{if(passedTplClass){key=passedTplClass+"_"+passedTplTagName}else{IBDOM.Utils.debug("Could not identify template")}}return key},function(nodeRef,templateType,passedTplClass,passedTplTagName){tpl=null;if(passedTplClass){tpl=IBDOM.Templates.Stashes.getTemplate(passedTplClass,passedTplTagName)}else{tpl=nodeRef.gEBCN(templateType);if(tpl.length==1){tpl=tpl[0];tpl.unsetClassValue(templateType);tpl.setClassValue("IS_TEMPLATE")}else{if(tpl.length==0){useTemplateDirective=nodeRef.getFirstPartialClassValue(templateType);if(useTemplateDirective){tplClass=useTemplateDirective.split("|")[1];if(tplClass&&(tplClass==((tSplit=tplClass.split(","))[0]))){tpl=IBDOM.Templates.Stashes.getTemplate(tplClass)}else{tpl=[];for(tc=0;cName=tSplit[tc];tc++){tpl[tc]=IBDOM.Templates.Stashes.getTemplate(cName)}}}}}}if(tpl&&tpl._IB_AUGMENTED){IBDOM.Utils.processTemplate(tpl)}else{if(IBDOM.Utils.isCollection(tpl)){for(t=0;tp=tpl[t];t++){IBDOM.Utils.processTemplate(tp)}}}return tpl},function(tp){if(!IBDOM.Utils.isCollection(tp)){return tp.cloneNodeAugmented(true)}else{tpa=[];for(c=0;t=tp[c];c++){tpa[c]=t.cloneNodeAugmented(true)}return tpa}});IBDOM.Utils.CURRENT_EXECUTION={};$e=IBDOM.Utils.getElement;$t=IBDOM.Templates.getTemplate;$=IBDOM.Utils.getWrappedFunction(window.$,IBDOM.Utils.getElement);doc=IBDOM.IBElement.getAugmentedElement(document);String.prototype.trim=function(){return(this.replace(/^[ \r\n\t\f\s]+/,"").replace(/[ \r\n\t\f\s]+$/,""))}