if(!Ext.ncbi){Ext.namespace("Ext.ncbi")}if(!Ext.Ncbi){Ext.namespace("Ext.Ncbi")}Ext.BLANK_IMAGE_URL="/core/extjs/ext-2.1/resources/images/default/s.gif";Ext.ncbi.version=1.9;Ext.ncbi.compatibleWith=2.2;if(Ext.version<2){if(window.console){console.warn("The version of the Ext Js library in use on this page  may not be compatible with version "+Ext.ncbi.version+" of Ext.ncbi. For full compatiblility, use version "+Ext.ncbi.compatibleWith+" of the Ext Js library")}}Ext.ncbi.baseUrl="/core/ext.ncbi/1";Ext.namespace("Ext.ncbi.util");Ext.ncbi.util.arrayUnique=function(a){var res=[];var l=a.length;for(var i=0;i<l;i++){if(res.indexOf(a[i],0)<0){res.push(a[i])}}return res};Ext.ncbi.util.ConfigDict=function(node,global,widgetName){if(typeof node.dom=="undefined"){node=Ext.get(node)}this.global=global||{};var configStr=node.dom.getAttribute("config");if(configStr){var local=Ext.ncbi.util.ConfigDict.parseLocalConfigStr(configStr,widgetName)}this.local=local||{}};Ext.ncbi.util.ConfigDict.parseLocalConfigStr=function(localConfigStr,sWidgetName){try{var oConfig=Ext.decode("{"+localConfigStr+"}")}catch(e){if(window.console){console.error(e.name+' when parsing local config string for widget: "Ext.ncbi.'+sWidgetName+'". Be sure to use proper JSON notation when setting local config attributes')}}return oConfig["Ext.ncbi."+sWidgetName]||oConfig};Ext.ncbi.util.ConfigDict.prototype={get:function(sProp,def){if(typeof (this.local[sProp])!="undefined"){return this.local[sProp]}if(typeof (this.global[sProp])!="undefined"){return this.global[sProp]}return def}};Ext.ncbi.util.copyClasses=function(from,to){var getExt=Ext.ncbi.util.getExtNode;var from=getExt(from);var to=getExt(to);var classes=from.dom.className.split(" ");for(var i=0;i<classes.length;i++){to.addClass(classes[i])}};Ext.ncbi.util.createCookie=function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()}else{var expires=""}document.cookie=name+"="+value+expires+"; path=/"};Ext.ncbi.util.eraseCookie=function(name){createCookie(name,"",-1)};Ext.ncbi.util.getExtNode=function(n){if(n.dom){return n}else{return Ext.get(n)}};Ext.ncbi.util.getRandomWholeNumber=function(max){if(!max){max=10}return Math.floor(Math.random()*max+1)};Ext.ncbi.util.generateId=(function(){var guid_counter=0;return function(sPrefix){var sPrefix=sPrefix||"id";return sPrefix+"-"+guid_counter++}})();Ext.ncbi.util.hasNodes=function(nodeOrNodes,sMessage){if(!nodeOrNodes||nodeOrNodes.length<1||(nodeOrNodes.isComposite==true&&nodeOrNodes.elements.length<1)){if(window.console){console.warn(sMessage)}return false}else{return true}};Ext.ncbi.util.getText=function(n,trim){if(n.dom){n=n.dom}var s;if(trim==false){return n.textContent||n.innerHTML}else{var s=n.textContent||n.innerHTML;return s.trim()}};Ext.ncbi.util.invokeConsole=function(msg,method){if(window.console){var method=method||"info";console[method](msg)}};Ext.ncbi.util.readCookie=function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length)}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)}}return null};Ext.ncbi.util.registerInstance=function(node,instance){if(node.dom){node=node.dom}var nodeId=node.getAttribute("id");if(!nodeId||nodeId.search(/^ext-gen\d+$/)!=-1){return }instance.id=nodeId};Ext.ncbi.util.registerWidgetClass=function(constructor){if(!constructor){throw new Error("No Ext.ncbi widget when calling registerWidgetClass()")}var instances=constructor.instances;if(!instances||instances.length<1){return }var f=function(id){if(!id){return instances}else{if(typeof id=="string"){for(var i=0;i<instances.length;i++){var instance=instances[i];if(instance.id&&instance.id==id){return instance}}return null}else{if(window.console){console.error("Not a valid ID passed to instances()")}return }}};constructor.getInstances=f};if(Ext.grid.GridPanel){Ext.namespace("Ext.ncbi.TableGrid");Ext.grid.TableGrid=function(table,config){config=config||{};Ext.apply(this,config);var cf=config.fields||[],ch=config.columns||[];table=Ext.get(table);tableWidth=table.getWidth();var ct=table.insertSibling();var fields=[],cols=[];var headers=table.query("thead th");if(headers.length<1){throw new Error("No properly marked up table headers. Make sure to use thead and th elements properly")}for(var i=0,h;h=headers[i];i++){var text=h.innerHTML;var name="tcol-"+i;var sortable=true;var hideable=true;var colConfig={};var deprecatedSortAttr=h.getAttribute("tgrd-sortable");var deprecatedHideAttr=h.getAttribute("tgrd-hideable");var deprecatedTypeAttr=h.getAttribute("tgrd-type");colConfigStr=h.getAttribute("config");if(colConfigStr){colConfig=Ext.decode("{"+colConfigStr+"}");if(colConfig.sortable===undefined){colConfig.sortable=true}else{sortable=colConfig.sortable}if(colConfig.hideable==undefined){colConfig.hideable=true}else{hideable=colConfig.hideable}}else{if(deprecatedSortAttr){if(window.console){console.warn('Using a deprecated attribute on a heading. Use "config" attribute instead')}if(deprecatedSortAttr.toLowerCase()=="false"){sortable=false}else{sortable=true}}}if(deprecatedHideAttr){if(window.console){console.warn('Using a deprecated attribute on a heading. Use "config" attribute instead')}if(deprecatedHideAttr.toLowerCase()=="false"){hideable=false}else{hideable=true}}var typeValue=null;if(deprecatedTypeAttr){typeValue=deprecatedTypeAttr}else{if(colConfig&&colConfig.type){typeValue=colConfig.type}}var fieldObj={name:name,mapping:"td:nth("+(i+1)+")/@innerHTML"};switch(typeValue){case"float":fieldObj.type="float";break;case"int":fieldObj.type="int";break;case"shortDate":fieldObj.type="date";fieldObj.dateFormat="m/d/Y";break;default:fieldObj.type="string"}fields.push(Ext.applyIf(cf[i]||{},fieldObj));function change(val){if(val>0){return'<span style="color:green;">'+val+"</span>"}else{if(val<0){return'<span style="color:red;">'+val+"</span>"}}return val}var rendererValue;var deprecatedFormatAttr=h.getAttribute("tgrd-format");if(deprecatedFormatAttr&&deprecatedFormatAttr=="usMoney"){if(window.console){console.warn('Using a deprecated attribute on a heading. Use "config" attribute instead')}rendererValue=deprecatedFormatAttr}else{if(colConfig&&colConfig.renderer){rendererValue=colConfig.renderer}else{rendererValue=null}}var colModelConfig={header:text,dataIndex:name,renderer:rendererValue,width:h.offsetWidth,tooltip:h.title,sortable:sortable,hideable:hideable};if(i==0){colModelConfig.id="first"}cols.push(Ext.applyIf(ch[i]||{},colModelConfig))}var ds=new Ext.data.Store({reader:new Ext.data.XmlReader({record:"tbody tr"},fields)});ds.loadData(table.dom);var cm=new Ext.grid.ColumnModel(cols);if(config.width||config.height){ct.setSize(config.width||"auto",config.height||"auto")}else{ct.setWidth(table.getWidth())}if(config.remove!==false){table.remove()}var applyIfObj={ds:ds,cm:cm,sm:new Ext.grid.RowSelectionModel()};if(typeof config.height=="undefined"){applyIfObj.autoHeight=true}Ext.applyIf(this,applyIfObj);Ext.grid.TableGrid.superclass.constructor.call(this,ct,{})};Ext.extend(Ext.grid.TableGrid,Ext.grid.GridPanel)}Ext.ncbi.CategoryFilter=function(filter){this.filter=filter;Ext.get(this.filter).on("click",this.filterCategories,this,{preventDefault:true})};Ext.ncbi.CategoryFilter.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.CategoryFilter.cats=null;Ext.ncbi.CategoryFilter.currentFilter=null;Ext.ncbi.CategoryFilter.ready=function(){var util=Ext.ncbi.util;var hooks=Ext.ncbi.CategoryFilter.hooks;Ext.ncbi.CategoryFilter.cats=Ext.DomQuery.select("#cat-categories .cat-category");if(util.hasNodes(Ext.ncbi.CategoryFilter.cats,'Ext.ncbi.CategoryFilter needs elements with classes of ".category" as descendents of a node with an id of "cat-categories"')==false){return }var showAll=Ext.get(Ext.DomQuery.selectNode("#cat-filters a#cat-showall"));if(util.hasNodes(showAll,'Ext.ncbi.CategoryFilter needs a node with an id of "cat-showall"')==false){return }showAll.addClass("cat-current-filter");Ext.ncbi.CategoryFilter.currentFilter=showAll;var filters=Ext.query("#cat-filters a");if(util.hasNodes(filters,'Ext.ncbi.CategoryFilter needs <a> elements as descendents of a node with an id of "cat-filters" to act as filters for the categories')==false){return }for(var i=0;i<filters.length;i++){var f=filters[i];if(f.id=="cat-showall"){showAll.on("click",Ext.ncbi.CategoryFilter.showAll,this,{preventDefault:true})}else{new Ext.ncbi.CategoryFilter(f)}}Ext.ncbi.util.registerWidgetClass(Ext.ncbi.CategoryFilter)};Ext.ncbi.CategoryFilter.showAll=function(e){Ext.ncbi.CategoryFilter.currentFilter.removeClass("cat-current-filter");var showAll=Ext.get(e.getTarget());Ext.ncbi.CategoryFilter.currentFilter=showAll;showAll.addClass("cat-current-filter");var cats=Ext.ncbi.CategoryFilter.cats;for(var i=0;i<cats.length;i++){var c=Ext.get(cats[i]);c.replaceClass("cat-hiding","cat-showing")}};Ext.ncbi.CategoryFilter.prototype.filterCategories=function(e){var t=Ext.get(e.getTarget());Ext.ncbi.CategoryFilter.currentFilter.removeClass("cat-current-filter");t.addClass("cat-current-filter");Ext.ncbi.CategoryFilter.currentFilter=t;var cats=Ext.ncbi.CategoryFilter.cats;for(var i=0;i<cats.length;i++){var c=Ext.get(cats[i]);c.replaceClass("cat-hiding","cat-showing");if(!this.filter.hash){if(window.console){console.error("Ext.ncbi.CategoryFilter: All filters must have a hash in their href attributes matching their categories")}return }if(c.id!=this.filter.hash.substring(1)){c.replaceClass("cat-showing","cat-hiding")}}};Ext.ncbi.FileExtension=function(l,fileExtension){this.fileExtension=fileExtension;this.l=l;this.insert(l,fileExtension)};Ext.ncbi.FileExtension.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.FileExtension.filesWithIcons=null;Ext.ncbi.FileExtension.ExtensionsToFind="pdf|doc|xls|ppt|vsd|txt|swf|jpg|gif|png|xml";Ext.ncbi.FileExtension.ready=function(config){var links=document.links;if(links.length<1){return }if(config){for(var x in config){if(x=="filesWithIcons"){Ext.ncbi.FileExtension.filesWithIcons=config[x].toLowerCase().split(",")}}}var extensions=new RegExp("\\.("+Ext.ncbi.FileExtension.ExtensionsToFind+")(\\?.*)?$","i");for(var i=0;i<links.length;i++){var l=links[i];var nxt=l.nextSibling;if(!nxt){Ext.DomHelper.insertAfter(l,".")}if(extensions.exec(l.href)!=null){var fileExtension=extensions.exec(l.href)[1].toLowerCase();if(Ext.ncbi.FileExtension.returnNextTxtNodeMatch(l)!=fileExtension){new Ext.ncbi.FileExtension(l,fileExtension)}}}Ext.ncbi.util.registerWidgetClass(Ext.ncbi.FileExtension)};Ext.ncbi.FileExtension.returnNextTxtNodeMatch=function(n){re2=RegExp("^\\s*\\(?\\s*("+Ext.ncbi.FileExtension.ExtensionsToFind+")\\s*\\)?","i");var nxtTxtNode=Ext.ncbi.FileExtension.nextTxtNode(n);if(nxtTxtNode==null){return }var str=nxtTxtNode.nodeValue;if(re2.exec(str)==null){return }return re2.exec(str)[1].toLowerCase()};Ext.ncbi.FileExtension.nextTxtNode=function(el){var nxt=el.nextSibling;while(nxt.nodeType!=3){nxt=nxt.nextSibling}return nxt};Ext.ncbi.FileExtension.prototype={insert:function(l,fileExtension){var frag=document.createDocumentFragment();var containSpan=document.createElement("span");containSpan.className="fex-contain-span";var span=document.createElement("span");var filesWithIcons=Ext.ncbi.FileExtension.filesWithIcons;if(filesWithIcons!=null&&filesWithIcons.indexOf(fileExtension)!=-1){Ext.get(span).addClass("fex-"+fileExtension)}else{var eTxt=document.createTextNode("("+fileExtension+")");span.appendChild(eTxt);span.className="fex-txt"}containSpan.appendChild(span);frag.appendChild(containSpan);var nxt=l.nextSibling;nxt.parentNode.insertBefore(frag,nxt)}};Ext.ncbi.FormValidator=function(form,elemsHash){this.form=form;this.elemsHash=elemsHash;this.init()};Ext.ncbi.FormValidator.keywords={wholeOnly:["^\\d+$","Must enter whole numbers"],wholeFloatOnly:["^\\d+|.\\d+$","Must enter either a whole number or a decimal number"],lettersOnly:["^[a-zA-Z]$","Must enter letters only"],emailOnly:["^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(.[a-zA-Z0-9_-]+)+$","Must enter a valid email"]};Ext.ncbi.FormValidator.styles=[];Ext.ncbi.FormValidator.styleDict={invalid:"fv-invalid",radioGroup:"fv-radio-group",radioGroupLabel:"fv-radio-group-label",errorNode:"fv-error-node",focusNode:"fv-focus-node"};Ext.ncbi.FormValidator.makeElemsHash=function(elems){var els=[];for(var i=0;i<elems.length;i++){var el=elems[i];var configs=new Ext.ncbi.util.ConfigDict(el,null).local;var elObj={};elObj.id=el.id;elObj.validations={};for(var prop in configs){var validation={};validation[prop]=configs[prop];elObj.validations[prop]=configs[prop]}els.push(elObj)}return els};Ext.ncbi.FormValidator.ready=function(globalConfig){var forms=document.getElementsByTagName("form");if(forms.length<1){return }for(var i=0;i<forms.length;i++){var f=Ext.get(forms[i]);var elems=f.query("*[config]");var elemsHash=Ext.ncbi.FormValidator.makeElemsHash(elems);var formValidation=new Ext.ncbi.FormValidator(f,elemsHash)}Ext.ncbi.util.registerWidgetClass(Ext.ncbi.FormValidator)};Ext.ncbi.FormValidator.prototype={init:function(){this.form.on("submit",this.processElems,this,{preventDefault:true})},processElems:function(){var elemsHash=this.elemsHash;Ext.ncbi.FormValidator.errors=[];for(var i=0;i<elemsHash.length;i++){var elemHash=elemsHash[i];var el=Ext.get(elemHash.id);var keywordsHash=Ext.ncbi.FormValidator.keywords;var errorObj={};var errorsArr=[];var validations=elemHash.validations;if(el.hasClass(Ext.ncbi.FormValidator.styleDict.invalid)){el.removeClass(Ext.ncbi.FormValidator.styleDict.invalid)}var value=el.dom.value;if(validations.required==true){checkRequired()}var keyword=validations.keyword||null;var pattern=validations.pattern||null;if((keyword||pattern)&&value!=""){checkWithRe()}errorObj.errors=errorsArr;var label=null;if(el.hasClass(Ext.ncbi.FormValidator.styleDict.radioGroup)){label=el.query("."+Ext.ncbi.FormValidator.styleDict.radioGroupLabel)[0]}else{label=Ext.query("label[for="+el.id+"]")[0]}if(typeof label=="undefined"){throw new Error("Ext.ncbi.FormValidator: Must have a label with a for attribute set to id of corresponding input field for element "+el.id)}errorObj.label=Ext.ncbi.util.getText(label);if(errorsArr.length>0){Ext.ncbi.FormValidator.errors.push(errorObj)}}if(Ext.ncbi.FormValidator.errors.length<1){this.form.dom.submit()}else{this.reportFormErrors()}function checkRequired(){var blank=false;var elDom=el.dom;var tagName=elDom.tagName.toLowerCase();if(el.hasClass(Ext.ncbi.FormValidator.styleDict.radioGroup)){validateRadios()}var type=elDom.getAttribute("type");switch(tagName){case"input":if(type=="text"&&value==""){blank=true}if(type=="checkbox"&&elDom.checked==false){addToErrors(elDom,"Field is required")}break;case"textarea":if(value==""){blank=true}break;case"select":var options=el.query("option");var defVal=options[0].value;if(elDom.value==defVal){blank=true}break}if(blank==true){addToErrors(elDom,"Field is required")}function validateRadios(){var radios=el.query("input[type=radio]");for(var j=0;j<radios.length;j++){var r=radios[j];if(r.checked==true){return }}addToErrors(el.dom,"You must select one option")}}function checkWithRe(){var errTxt=null;if(keyword){regExp=new RegExp(keywordsHash[keyword][0],"g");errTxt=keywordsHash[keyword][1]}else{regExp=new RegExp(pattern,"g");errTxt=validations.customMsg||"Pattern doesn't match"}if(value.search(regExp)==-1){addToErrors(el.dom,errTxt)}}function addToErrors(el,msg){var extEl=Ext.get(el);extEl.replaceClass(Ext.ncbi.FormValidator.styleDict.invalid,Ext.ncbi.FormValidator.styleDict.invalid);errorObj.name=el.getAttribute("name");errorsArr.push(msg)}},reportFormErrors:function(){var errors=Ext.ncbi.FormValidator.errors;if(errors.length<1){return }var legendName=this.form.query("legend")[0].innerHTML;var errorDiv=document.createElement("div");errorDiv.setAttribute("class",Ext.ncbi.FormValidator.styleDict.errorNode);var errorDivId="fv-for-"+this.form.dom.getAttribute("name");errorDiv.setAttribute("id",errorDivId);var df=document.createDocumentFragment();var eNode=Ext.get(errorDivId);if(eNode){eNode.remove()}var h=document.createElement("h2");var focusA=document.createElement("a");focusA.style.color="red";focusA.style.textDecoration="none";focusA.style.outline="none";focusA.setAttribute("href","#");focusA.setAttribute("class",Ext.ncbi.FormValidator.styleDict.focusNode);var hTxt=document.createTextNode("Form Errors");var p=document.createElement("p");var desc=document.createTextNode("Please address the following errors:");p.appendChild(desc);focusA.appendChild(hTxt);h.appendChild(focusA);errorDiv.appendChild(h);errorDiv.appendChild(p);var rootOl=document.createElement("ol");errorDiv.appendChild(rootOl);for(var i=0;i<errors.length;i++){var errorsObj=errors[i];var elName=errorsObj.name;var elLi=document.createElement("li");var elTxtNode=document.createTextNode(errorsObj.label);elLi.appendChild(elTxtNode);rootOl.appendChild(elLi);rootOl.appendChild(elLi);var erUl=document.createElement("ul");elLi.appendChild(erUl);for(var j=0;j<errorsObj.errors.length;j++){var errLi=document.createElement("li");var errTxt=document.createTextNode(errorsObj.errors[j]);var a=document.createElement("a");a.setAttribute("href","#"+elName);a.appendChild(errTxt);errLi.appendChild(a);erUl.appendChild(errLi)}}df.appendChild(errorDiv);this.form.dom.parentNode.insertBefore(df,this.form.dom);focusA.focus();Ext.get(focusA).on("click",function(){},this,{preventDefault:true})}};Ext.ncbi.InputHint=function(node){if((node.dom.tagName.toLowerCase()!="input")&&(node.dom.tagName.toLowerCase()!="textarea")){return }if((node.dom.tagName.toLowerCase()=="input")&&(node.dom.type.toLowerCase()!="text")){return }this.init(node);Ext.ncbi.InputHint.oThis=this};Ext.ncbi.InputHint.ready="form .hnt";Ext.ncbi.InputHint.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.InputHint.prototype={init:function(node){if(node.dom.value!=node.dom.defaultValue){node.removeClass("hnt")}node.on("focus",this.hide)},hide:function(evt,oThis){var t=evt.getTarget();var tElem=Ext.get(t);if((t.value==t.defaultValue)||(t.value=="")){Ext.get(t).removeClass("hnt");if(t.value==t.defaultValue){t.value=""}tElem.on("blur",Ext.ncbi.InputHint.oThis.show)}},show:function(evt){var t=evt.getTarget();if(t.value==""){Ext.get(t).addClass("hnt");t.value=t.defaultValue;Ext.get(t).on("focus",Ext.ncbi.InputHint.oThis.hide)}}};Ext.ncbi.MenuButton=function(rootUl,configDict){this.rootUl=rootUl;this.origId=this.rootUl.dom.id;this.remove=configDict.get("remove",true);this.customCls=configDict.get("customCls",null);this.init()};Ext.ncbi.MenuButton.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css","/core/extjs/ext-2.1/resources/css/ext-all.css"];Ext.ncbi.MenuButton.instances=[];Ext.ncbi.MenuButton.validateRoot=function(ul){var kids=ul.childNodes;var count=0;for(var i=0;i<kids.length;i++){var k=kids[i];if(k.nodeType!=1||k.tagName.toLowerCase()!="li"){continue}count++}if(count>1){throw new Error("Ext.ncbi.MenuButton: Menubutton root nodes cannot have more than one li child")}};Ext.ncbi.MenuButton.ready=function(globalConfig){var rootUls=Ext.query("ul.mb");if(Ext.ncbi.util.hasNodes(rootUls,'Ext.ncbi.MenuButton: Must have at least one ul element with class of "mb"')==false){return }for(var i=0;i<rootUls.length;i++){var rootUl=Ext.get(rootUls[i]);Ext.ncbi.MenuButton.validateRoot(rootUl.dom);var configDict=new Ext.ncbi.util.ConfigDict(rootUl,globalConfig,"MenuButton");new Ext.ncbi.MenuButton(rootUl,configDict)}Ext.ncbi.util.registerWidgetClass(Ext.ncbi.MenuButton)};Ext.ncbi.MenuButton.prototype={init:function(){var firstLi=this.rootUl.first("li");var firstUl=firstLi.first("ul");if(!firstUl){throw new Error('Ext.ncbi.MenuButton: ul node id="'+this.rootUl.id+'" does not have menu markup. Must have nested ul element')}var maintTxt=null;var mainTxtCt=firstLi.first("span");var firstA=firstLi.first("a");if(firstA){mainTxt=Ext.ncbi.util.getText(firstA);this.menuBtn=new Ext.Toolbar.SplitButton({text:mainTxt,handler:function(){window.location=firstA.dom.href}})}else{if(mainTxtCt){var mainTxt=Ext.ncbi.util.getText(mainTxtCt);this.menuBtn=new Ext.Toolbar.Button({text:mainTxt})}else{throw new Error("Ext.ncbi.MenuButton: You need an a element or a span to contain the first li node of a menubutton")}}var mainMen=this.getMenuFromUl(firstUl);this.menuBtn.menu=mainMen;var ct=this.rootUl.insertSibling();ct.addClass("mb-item");Ext.ncbi.util.registerInstance(this.rootUl,this.menuBtn);Ext.ncbi.MenuButton.instances.push(this.menuBtn);this.menuBtn.render(ct);this.rootUl.remove()},createItem:function(node){var item=null;function is(node,tagName){return node&&node.nodeType==1&&node.tagName.toLowerCase()===tagName}function nextElement(node){if(node){do{node=node.nextSibling}while(node&&node.nodeType!=1)}return node}var firstkid=node.first().dom;if(firstkid){var itext=Ext.ncbi.util.getText(firstkid);item=new Ext.menu.Item({text:itext});if(is(firstkid,"a")){item.href=firstkid.href}var secondkid=nextElement(firstkid);if(is(secondkid,"ul")){var items=this.getItemsFromUl(secondkid);var newMenu=new Ext.menu.Menu();for(var i=0;i<items.length;i++){newMenu.add(items[i])}item.menu=newMenu}else{}}return item},getItemsFromUl:function(ulnode){var items=[];var that=this;var li=Ext.get(ulnode).down("li");while(li){var item=that.createItem(li);if(item){items.push(item)}li=li.next("li")}return items},getMenuFromUl:function(ulNode){var mainMen=new Ext.menu.Menu();var items=this.getItemsFromUl(ulNode);for(var i=0;i<items.length;i++){mainMen.add(items[i])}return mainMen}};Ext.ncbi.Portlet=function(origPortNode){this.origPortNode=origPortNode;if(this.origPortNode.hasClass("norender")){return }this.origPortNodeDom=this.origPortNode.dom;this.origId=this.origPortNodeDom.id;this.renderId=Ext.ncbi.util.generateId("port");var fc=this.origPortNode.first(null,true);if(fc.tagName.search(/^h[1-6]/i)!=-1){this.titleNode=fc}else{this.titleNode=null}if(this.titleNode){this.titleTxt=this.titleNode.textContent||this.titleNode.innerText}else{this.titleTxt="Untitled"}this.configDict=new Ext.ncbi.util.ConfigDict(this.origPortNode,Ext.ncbi.Portlet.globalConfig,"Portlet");this.init()};Ext.ncbi.Portlet.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css","/core/extjs/ext-2.1/resources/css/ext-all.css"];Ext.ncbi.Portlet.instances=[];Ext.ncbi.Portlet.ready="div.port";Ext.ncbi.Portlet.prototype={init:function(){this.origPortNode=Ext.DomHelper.insertBefore(this.origPortNodeDom,{tag:"div",id:this.renderId});Ext.get(this.origPortNode).addClass("port");Ext.ncbi.util.copyClasses(this.origPortNodeDom,this.origPortNode);this.makePortlet();this.origPortNode.id=this.origId},makePortlet:function(){var cd=this.configDict;var contain=this.origPortNode.dom;var tools=[];var close={id:"close",handler:function(e){portlet.destroy()}};var closeable=cd.get("closeable",true);if(closeable==true){tools.push(close)}var portlet=new Ext.Panel({title:this.titleTxt,contentEl:this.origPortNodeDom,collapsible:cd.get("collapsible",true),width:"auto",animCollapse:cd.get("animCollapse",true),draggable:false,frame:cd.get("frame",false),tools:tools,collapsed:cd.get("collapsed",false)});Ext.ncbi.util.registerInstance(this.origPortNodeDom,portlet);portlet.render(this.origPortNode.id);Ext.ncbi.Portlet.instances.push(portlet);this.makeAccessible(portlet,this.titleTxt)},makeAccessible:function(portlet,title){var portEl=portlet.getEl();var portBody=Ext.get(portEl.query(".x-panel-body")[0]);var toolBar=Ext.get(portEl.query(".x-tool")[0]);var portletHeader=Ext.get(portEl.query(".x-panel-header")[0]);var toolBarSpan=Ext.get(portEl.query(".x-panel-header-text")[0]);var headingTagName;if(this.titleNode){headingTagName=this.titleNode.tagName.toLowerCase()}else{headingTagName="h2"}if(this.titleNode){portletHeader.dom.appendChild(this.titleNode);Ext.get(this.titleNode).addClass("x-panel-header-text")}toolBarSpan.remove()}};Ext.ncbi.SmoothScroll=function(link){if(link.dom.href.search(/#$/)!=-1||link.hasClass("ss-ignore")){return }this.link=link;this.linkPos=this.link.getY();this.targetId=this.link.dom.hash.substring(1);this.target=Ext.get(this.targetId);if(!this.target){Ext.ncbi.util.invokeConsole("Ext.ncbi.SmoothScroll: link "+this.link.dom+" has no matching anchor. Each link must have a matching anchor element with an id attribute","error");return }this.targetPos=this.target.getY();this.dir=this.targetPos-this.linkPos>=0?"top":"bottom";this.init()};Ext.ncbi.SmoothScroll.body=Ext.get(document.documentElement||document.body);Ext.ncbi.SmoothScroll.ready="a[href^=#]";Ext.ncbi.SmoothScroll.styles=[];Ext.ncbi.SmoothScroll.prototype={init:function(){this.link.on("click",this.scroll,this,{preventDefault:true})},scroll:function(){var duration=Ext.ncbi.SmoothScroll.globalConfig.duration||0.35;if(Ext.isSafari){Ext.getBody().scrollTo(this.dir,this.targetPos,{duration:duration})}else{Ext.ncbi.SmoothScroll.body.scrollTo(this.dir,this.targetPos,{duration:duration})}},fixHash:function(){var doIt=function(){window.location.hash=hash};window.setTimeout(doIt,100)}};Ext.namespace("Ext.ncbi.TableGrid");Ext.ncbi.TableGrid.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css","/core/extjs/ext-2.1/resources/css/ext-all.css"];Ext.ncbi.TableGrid.instances=[];Ext.ncbi.TableGrid.ready=function(config){if(!Ext.grid.GridPanel){if(window.console){console.warn("Ext.ncbi.TableGrid: Grid component is not loaded. You need to load ext-big.js or ext-std.js with this widget.")}return }var tablesToPaint=Ext.query("table.tgrd");if(Ext.ncbi.util.hasNodes(tablesToPaint,'Ext.ncbi.TableGrid: No table nodes with class="tgrd" to work with')==false){return }for(var i=0;i<tablesToPaint.length;i++){var t=Ext.get(tablesToPaint[i]);var title;var captionEl=t.query("caption")[0];var title=captionEl?captionEl.innerHTML:null;if(!title){title=t.dom.getAttribute("title")||null}var configDict=new Ext.ncbi.util.ConfigDict(t,config,"TableGrid");var height=configDict.get("height");var width=configDict.get("width",t.getWidth());var gridConfig={width:width,height:height,stripeRows:configDict.get("stripeRows",true),title:title,frame:configDict.get("frame",false),collapsible:configDict.get("collapsible",false),enableHdMenu:configDict.get("enableCntxtMenu",true),autoExpandColumn:"first",remove:configDict.get("remove",true)};var grid=new Ext.grid.TableGrid(t.dom,gridConfig);Ext.ncbi.util.registerInstance(t,grid);Ext.ncbi.TableGrid.instances.push(grid)}Ext.ncbi.util.registerWidgetClass(Ext.ncbi.TableGrid)};Ext.ncbi.TableStriper=function(table){this.table=table;var configDict=new Ext.ncbi.util.ConfigDict(this.table,Ext.ncbi.TableStriper.globalConfig,"tableStriper");this.oddOrEven=configDict.get("oddOrEven","even");this.init(this.table)};Ext.ncbi.TableStriper.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.TableStriper.markupTriggers={stripeTable:"str",striped:"str-striped"};Ext.ncbi.TableStriper.ready="table[class="+Ext.ncbi.TableStriper.markupTriggers.stripeTable+"]";Ext.ncbi.TableStriper.prototype={init:function(){var rows=this.table.dom.getElementsByTagName("tr");for(var j=1;j<rows.length;j++){var r=Ext.get(rows[j]);var modResult;this.oddOrEven=="even"?modResult=0:modResult=1;if(j%2==modResult){this.stripe(r)}}},stripe:function(r){r.addClass(Ext.ncbi.TableStriper.markupTriggers.striped)}};Ext.ncbi.Toc=function(){this.render()};Ext.ncbi.Toc.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.Toc.tocNode=null;Ext.ncbi.Toc.contentSect=null;Ext.ncbi.Toc.numbersDisplayed=null;Ext.ncbi.Toc.levelLimit=null;Ext.ncbi.Toc.headingOffset=null;Ext.ncbi.Toc.hdrs=[];Ext.ncbi.Toc.ready=function(config){var tocNode=document.getElementById("toc-node");Ext.ncbi.Toc.tocNode=tocNode?tocNode:document.body;Ext.ncbi.Toc.contentSect=null;Ext.ncbi.Toc.levelLimit=(config&&config.levelLimit)?config.levelLimit:6;Ext.ncbi.Toc.numbersDisplayed=(config&&config.numbersDisplayed)?config.numbersDisplayed:true;Ext.ncbi.Toc.headingOffset=(config&&config.headingOffset)?config.headingOffset:1;var tocContent=document.getElementById("toc-content");if(!tocContent){throw new Error("Ext.ncbi.Toc: No contentSection node defined in document.")}Ext.ncbi.Toc.contentSect=tocContent;Ext.ncbi.Toc.findSections(Ext.ncbi.Toc.contentSect,Ext.ncbi.Toc.hdrs);if(Ext.ncbi.Toc.hdrs.length<1){throw new Error("Ext.ncbi.Toc: No HTML headers in markup")}new Ext.ncbi.Toc();Ext.ncbi.util.registerWidgetClass(Ext.ncbi.Toc)};Ext.ncbi.Toc.findSections=function(contentSect,hdrs){for(var m=contentSect.firstChild;m!=null;m=m.nextSibling){var mElem=Ext.get(m);if(m.nodeType!=1){continue}if(m==Ext.ncbi.Toc.tocNode){continue}if(m.tagName.toLowerCase()=="p"){continue}if(m.tagName.length==2&&m.tagName.charAt(0).toLowerCase()=="h"&&Ext.ncbi.Toc.getLevel(m)<=Ext.ncbi.Toc.levelLimit){if(mElem.first()!=null){var headerChild=mElem.first(null,true);if(headerChild.tagName.toLowerCase()=="a"&&(headerChild.id||headerChild.name)){var removedAnchor=m.removeChild(headerChild);m.parentNode.insertBefore(removedAnchor,m)}else{if(headerChild.href){}}}hdrs.push(m)}else{Ext.ncbi.Toc.findSections(contentSect,hdrs)}}};Ext.ncbi.Toc.getLevel=function(h){return parseInt(h.tagName.charAt(1))};Ext.ncbi.Toc.prototype={render:function(){var hdrs=Ext.ncbi.Toc.hdrs;var sectionNumber;if(Ext.ncbi.Toc.numbersDisplayed==false){sectionNumber=""}else{var sectionNumbers=[0,0,0,0,0,0]}var tocStr="";tocStr+='<ul id="toc-list">';for(var i=0;i<hdrs.length;i++){var h=hdrs[i];var content=h.innerHTML;var L=Ext.ncbi.Toc.getLevel(h);if(Ext.ncbi.Toc.headingOffset!=null){L=L-Ext.ncbi.Toc.headingOffset+1;if(L<1){throw"A heading level is less than the headingOffset parameter passed."}}if(Ext.ncbi.Toc.numbersDisplayed==true){sectionNumbers[L-1]++;for(var j=L;j<6;j++){sectionNumbers[j]=0}sectionNumber="";for(j=0;j<L;j++){sectionNumber+=sectionNumbers[j];if(j<L-1){sectionNumber+="."}}}tocStr+='<li class="outLoop">';for(var x=0;x<L-1;x++){tocStr+='<ul><li class="inLoop">'}tocStr+='<a href="#'+i+'"><span class="toc-sect-num">'+sectionNumber+"</span> "+content+"</a>";for(var x=0;x<L-1;x++){tocStr+="</li></ul>"}tocStr+="</li>";h.innerHTML='<a id="'+i+'"></a><span class="heading_section_number">'+sectionNumber+"</span> "+content}tocStr+="</ul>";var tocDiv=document.createElement("div");tocDiv.innerHTML=tocStr;if(Ext.ncbi.Toc.tocNode==document.body){var ref=Ext.get(document.body).first(null,true);tocDiv.innerHTML=tocStr;ref.parentNode.insertBefore(tocDiv,ref)}else{Ext.ncbi.Toc.tocNode.innerHTML+=tocStr}}};Ext.ncbi.Toggle=function(m,slaves,configDict,hintNode,isDep){this.m=m;this.slaves=slaves;this.configDict=configDict;this.animate=configDict.get("animate",true);this.animDuration=configDict.get("animDuration",0.15);this.indicator=configDict.get("indicator","arrow");this.hintNode=hintNode;if(this.hintNode){if(this.hintNode.hasClass("tog-hint-open")){this.hintClosed=configDict.get("hintClosed",null);this.hintOpen=hintNode.dom.innerHTML}else{this.hintClosed=hintNode.dom.innerHTML;this.hintOpen=configDict.get("hintOpen",null)}}this.isDep=isDep;this.m.on("click",this.init,this,{preventDefault:true})};Ext.ncbi.Toggle.makeIndex=function(slaves){var ids=[];for(var i=0;i<slaves.length;i++){var sl=Ext.get(slaves[i]);ids.push(document.getElementById(sl.dom.getAttribute("toggle")).id)}var uniqueIds=Ext.ncbi.util.arrayUnique(ids);var indx={};for(var i=0;i<uniqueIds.length;i++){var id=uniqueIds[i];var slaveNodeMatches=[];for(var j=0;j<slaves.length;j++){var s=Ext.get(slaves[j]);if(s.dom.getAttribute("toggle")==id){slaveNodeMatches.push(s)}}indx[id]=slaveNodeMatches}return(indx)};Ext.ncbi.Toggle.instances=[];Ext.ncbi.Toggle.styles=[Ext.ncbi.baseUrl+"/css/ext.ncbi.css"];Ext.ncbi.Toggle.styleDict={depMaster:"tog-master",togGroup:"tog-group",togGroupOpen:"tog-group-open",renderOpen:"tog-render-open",masterClosed:"tog-master-closed",masterClosedElbow:"tog-master-closed-elbow",masterOpenElbow:"tog-master-open-elbow",masterOpen:"tog-master-open",slaveClosed:"tog-slave-closed",slaveOpen:"tog-slave-open",hintOpen:"tog-hint-open",hintClosed:"tog-hint-closed"};Ext.ncbi.Toggle.ready=function(globalConfig){var styleDict=Ext.ncbi.Toggle.styleDict;var depMasters=Ext.query("."+styleDict.depMaster);if(depMasters.length>0){var plusMinus=false;if(globalConfig&&globalConfig.indicator&&globalConfig.indicator=="plus-minus"){plusMinus=true}for(var h=0;h<depMasters.length;h++){var depMaster=Ext.get(depMasters[h]);depSlaves=new Array(depMaster.next());if(plusMinus==true){depMaster.addClass(styleDict.masterClosedElbow)}else{depMaster.addClass(styleDict.masterClosed)}depSlaves[0].addClass(styleDict.slaveClosed);new Ext.ncbi.Toggle(depMaster,depSlaves,new Ext.ncbi.util.ConfigDict(depMaster,globalConfig,"Toggle"),null,true)}}var slaves=Ext.query("[toggle]");if(slaves.length>0){var indx=Ext.ncbi.Toggle.makeIndex(slaves);for(var id in indx){var m=Ext.get(id);var slaves=indx[id];var hintNode=Ext.get(m.query("span[class^=tog-hint]")[0])||null;var configDict2=new Ext.ncbi.util.ConfigDict(m,globalConfig,"Toggle");new Ext.ncbi.Toggle(m,slaves,configDict2,hintNode)}}var groups=Ext.query("dl."+Ext.ncbi.Toggle.styleDict.togGroup);if(groups.length>0){for(var j=0;j<groups.length;j++){var g=Ext.get(groups[j]);var dts=g.query("dt");for(var k=0;k<dts.length;k++){var dt=Ext.get(dts[k]);var hintNode=Ext.get(dt.query("span[class^=tog-hint]")[0])||null;var groupSlaves=new Array(dt.next());var renderOpen=(g.hasClass(Ext.ncbi.Toggle.styleDict.togGroupOpen)==true)?true:false;if(renderOpen==false){dt.addClass(Ext.ncbi.Toggle.styleDict.masterClosed);groupSlaves[0].addClass(Ext.ncbi.Toggle.styleDict.slaveClosed)}else{dt.addClass(Ext.ncbi.Toggle.styleDict.masterOpen);groupSlaves[0].addClass(Ext.ncbi.Toggle.styleDict.slaveOpen)}new Ext.ncbi.Toggle(dt,groupSlaves,new Ext.ncbi.util.ConfigDict(g,globalConfig,"Toggle"),hintNode)}}}if(depMasters.length<1&&slaves.length<1&&groups.length<1){if(window.console){console.warn("No nodes to work with. Make sure you are marking your page up according to Toggle's documentation")}return }Ext.ncbi.util.registerWidgetClass("Toggle")};Ext.ncbi.Toggle.prototype={init:function(){var styleDict=Ext.ncbi.Toggle.styleDict;if(this.m.hasClass(styleDict.masterClosed)||this.m.hasClass(styleDict.masterClosedElbow)){this.show()}else{this.hide()}},show:function(){var slaves=this.slaves;var styleDict=Ext.ncbi.Toggle.styleDict;if(this.m.hasClass(styleDict.masterClosedElbow)){this.m.replaceClass(styleDict.masterClosedElbow,styleDict.masterOpenElbow)}else{this.m.replaceClass(styleDict.masterClosed,styleDict.masterOpen)}if(this.isDep==true&&this.configDict.get("indicator","arrow")=="plus-minus"){this.m.replaceClass(styleDict.masterClosedElbow,styleDict.masterOpenElbow)}for(var i=0;i<slaves.length;i++){var s=slaves[i];if(this.animate==true){s.slideIn("t",{duration:this.animDuration,useDisplay:true})}s.replaceClass(styleDict.slaveClosed,styleDict.slaveOpen)}if(this.hintNode&&this.hintNode.hasClass(styleDict.hintClosed)){this.hintNode.dom.innerHTML=this.hintOpen;this.hintNode.replaceClass(styleDict.hintClosed,styleDict.hintOpen)}},hide:function(animate){var slaves=this.slaves;var styleDict=Ext.ncbi.Toggle.styleDict;if(this.m.hasClass(styleDict.masterOpenElbow)){this.m.replaceClass(styleDict.masterOpenElbow,styleDict.masterClosedElbow)}else{this.m.replaceClass(styleDict.masterOpen,styleDict.masterClosed)}if(this.isDep==true&&this.configDict.get("indicator","arrow")=="plus-minus"){this.m.replaceClass(styleDict.masterOpenElbow,styleDict.masterClosedElbow)}for(var i=0;i<slaves.length;i++){var s=slaves[i];if(this.animate==true){s.slideOut("t",{duration:this.animDuration,useDisplay:true})}s.replaceClass(styleDict.slaveOpen,styleDict.slaveClosed)}if(this.hintNode&&this.hintNode.hasClass(styleDict.hintOpen)){this.hintNode.dom.innerHTML=this.hintClosed;this.hintNode.replaceClass(styleDict.hintOpen,styleDict.hintClosed)}}};(function(){if(!document.getElementsByTagName||!document.getElementById){return }var extNcbiMembers=getExtNcbiNames();var util=Ext.ncbi.util;var invokeConsole=util.invokeConsole;var head=document.getElementsByTagName("head")[0];var stylesToWrite=[];var extNcbiMetas=getExtNcbiMetas();var extMeta=extNcbiMetas.extMeta;var paramMetas=extNcbiMetas.paramMetas;if(extMeta){var extContent=extMeta.getAttribute("content");if(!extContent||extContent==""){throw new Error("Must have a content attribute with a list of Ext.ncbi widgets to call")}var widgetNames=extContent.toLowerCase().split(/[, ]+/);for(var a=0;a<widgetNames.length;a++){var widgetName=widgetNames[a];var matchingParamMeta=null;for(var b=0;b<paramMetas.length;b++){var paramMeta=paramMetas[b];var paramMetaName=paramMeta.getAttribute("name");var paramMetaWidgetName=paramMetaName.split(".")[2];if(widgetName==paramMetaWidgetName.toLowerCase()){matchingParamMeta=paramMeta;break}}var paramAttr=null;var widgetConstr=extNcbiMembers[widgetName];var styles=widgetConstr.styles;if(styles){addToStyles()}var readyMethod=null;var ready=widgetConstr.ready;if(typeof ready=="string"){readyMethod=_createReadyMethod(ready,widgetConstr)}else{readyMethod=ready}if(matchingParamMeta){paramAttr=matchingParamMeta.getAttribute("content")}else{paramAttr=""}var paramObj=parseParamStr(paramAttr);widgetConstr.globalConfig=paramObj;callWidget()}}if(paramMetas.length>0){for(var a=0;a<paramMetas.length;a++){var paramMeta=paramMetas[a];var paramMetaName=paramMeta.getAttribute("name");var widgetName=paramMetaName.split(".")[2].toLowerCase();var widgetConstr=extNcbiMembers[widgetName];if(widgetNames&&widgetNames.indexOf(widgetName)!=-1){break}var paramAttr=paramMeta.getAttribute("content");if(!paramAttr){paramAttr=""}var paramObj=parseParamStr();widgetConstr.globalConfig=paramObj;var widgetConstr=extNcbiMembers[widgetName];var styles=widgetConstr.styles;if(styles){addToStyles()}var readyMethod=null;var ready=widgetConstr.ready;if(typeof ready=="string"){readyMethod=_createReadyMethod(ready,widgetConstr)}else{readyMethod=ready}callWidget()}}var fixedStylesArr=util.arrayUnique(stylesToWrite);writeStyles();function _createReadyMethod(queryString,widgetConstr){return function(){var nodes=Ext.query(queryString);if(Ext.ncbi.util.hasNodes(nodes,"No nodes to work with...")==false){return }for(var i=0;i<nodes.length;i++){new widgetConstr(Ext.get(nodes[i]))}Ext.ncbi.util.registerWidgetClass(widgetConstr)}}function addToStyles(){for(var i=0;i<styles.length;i++){stylesToWrite.push(styles[i])}}function writeStyles(){for(var i=0;i<fixedStylesArr.length;i++){document.write('<link type="text/css" rel="stylesheet" href="'+fixedStylesArr[i]+'"/>')}}function moveElToEnd(a,el){if(a.indexOf(el)==-1){return a}res=[];for(var i=0;i<a.length;i++){res.push(a[i])}res.remove(el);res.push(el);return res}function moveElToFront(a,el){if(a.indexOf(el)==-1){return a}res=[];for(var i=0;i<a.length;i++){res.push(a[i])}res.remove(el);res.unshift(el);return res}function getExtNcbiNames(){var o={};for(var prop in Ext.ncbi){Ext.Ncbi[prop]=Ext.ncbi[prop];var id=prop.toLowerCase();var cons=Ext.ncbi[prop];o[id]=cons}return o}function getExtNcbiMetas(){var obj={};paramMetas=[];var metas=head.getElementsByTagName("meta");for(var i=0;i<metas.length;i++){var m=metas[i];var n=m.getAttribute("name");if(n&&n.search(/^ext\.ncbi$/i)!=-1){obj.extMeta=m}if(n&&n.search(/^ext\.ncbi\..*$/i)!=-1){paramMetas.push(m)}}obj.paramMetas=paramMetas;return obj}function parseParamStr(){try{var o=Ext.decode("{"+paramAttr+"}")}catch(e){invokeConsole(e.name+' when parsing global config string from meta tag for widget "Ext.ncbi.'+widgName+". Be sure to use proper JSON notation when setting global config attributes","error")}return o}function callWidget(){Ext.onReady(((function(x,y){return function(){try{x(y)}catch(e){if(window.console){var cons=true}if(e.name&&e.fileName&&e.lineNumber&&e.message){var m=e.name+" on line "+e.lineNumber+" of "+e.fileName+". "+e.message+".";if(cons==true){console.error(m)}}else{if(cons==true){console.error(e)}}}}})(readyMethod,paramObj)))}}());