/*
 * Ext.nd - Ext for Notes / Domino Beta 1 rev 2
 * Copyright(c) 2008, Ext.nd LLC.
 * 
 * http://www.extjs.com/license
 */


Ext.namespace("Ext.nd","Ext.nd.form","Ext.nd.data");Ext.nd.getBlankImageUrl=function(){return this.extndUrl+"resources/images/s.gif";};Ext.nd.init=function(config){Ext.apply(this,config);Ext.BLANK_IMAGE_URL=this.getBlankImageUrl();};

Ext.nd.Document=function(config){var sForm='Ext.nd.Document.json';Ext.apply(this,config);var sHREF,locNSF,urlStart;sHREF=location.href;locNSF=sHREF.toLowerCase().indexOf('.nsf/');urlStart=sHREF.substring(0,locNSF+5);this.url=urlStart+'($Ext.nd.SwitchForm)/'+this.unid+'?OpenDocument&form='+sForm;Ext.Ajax.request({method:'GET',disableCaching:true,success:this.assignValue,failure:this.processException,scope:this,url:this.url});};Ext.nd.Document.prototype={onComplete:function(){},assignValue:function(req){var sTmp,oTmp;sTmp=req.responseText;oTmp=eval('('+sTmp+')');Ext.apply(this,oTmp);this.onComplete();},processException:function(req){Ext.MessageBox.alert("Error","There was an error in the instantiation of the Document class");}};

Ext.nd.DominoPagingToolbar=function(config){Ext.nd.DominoPagingToolbar.superclass.constructor.call(this,config);this.previousCursor=1;this.previousStart=[];this.previousStartMC=new Ext.util.MixedCollection();};Ext.extend(Ext.nd.DominoPagingToolbar,Ext.PagingToolbar,{beforePageText:"Showing entries ",afterPageText:" - {0}",readPage:function(d){var pageNum=this.field.dom.value;if(!pageNum){this.field.dom.value=d.activePage;return false;}
return pageNum;},onPagingKeydown:function(e){var k=e.getKey(),d=this.getPageData(),pageNum;if(k==e.RETURN){e.stopEvent();pageNum=this.readPage(d);this.doLoad(pageNum);}else if(k==e.HOME||k==e.END){e.stopEvent();pageNum=k==e.HOME?1:d.pages;this.field.dom.value=pageNum;}else if(k==e.UP||k==e.PAGEUP||k==e.DOWN||k==e.PAGEDOWN){e.stopEvent();if(pageNum=this.readPage(d)){var increment=e.shiftKey?10:1;if(k==e.DOWN||k==e.PAGEDOWN){increment*=-1;}
pageNum+=increment;if(pageNum>=1&pageNum<=d.pages){this.field.dom.value=pageNum;}}}},onClick:function(which){var store=this.store;var d=this.getPageData();var start;this.which=which;switch(which){case'first':store.load({params:Ext.apply(store.lastOptions.params,{start:1,count:this.pageSize})});break;case'prev':var first=store.data.first();var firstPosition=first.node.attributes.getNamedItem('position').value;var indexFirst=this.previousStartMC.indexOfKey(firstPosition)
if(indexFirst!=-1){if(indexFirst==0){start=1;}else{start=this.previousStartMC.get(indexFirst-1);}}else{if(this.prevWhich=='last'){start=this.previousStartMC.last();}else{start=1;this.previousStartMC.clear();}}
store.load({params:Ext.apply(store.lastOptions.params,{start:start,count:this.pageSize})});break;case'next':var last=store.data.last();var lastIndex=store.data.indexOf(last);if(store.data.length>0){if(last.isCategoryTotal){var previous=store.getAt(lastIndex-1);start=previous.node.attributes.getNamedItem('position').value;}else{start=last.node.attributes.getNamedItem('position').value;}
this.previousStartMC.add(start,start);}else{start=1;}
store.load({params:Ext.apply(store.lastOptions.params,{start:start,count:this.pageSize})});break;case'last':var total=store.getTotalCount();var extra=total%this.pageSize;var lastStart=this.isCategorized?total:extra?(total-extra):total-this.pageSize;store.load({params:Ext.apply(store.lastOptions.params,{start:lastStart,count:this.pageSize})});break;case'refresh':store.load({params:Ext.apply(store.lastOptions.params,{start:this.cursor,count:this.pageSize})});break;}
this.prevWhich=which;},onLoad:function(store,r,o){this.cursor=o.params?(o.params.start?o.params.start:1):1;var d=this.getPageData(),ap=d.activePage,ps=d.pages;if(!o.params.start){d.activePage=1;ap=1;}
var tm=Ext.util.TextMetrics.createInstance(this.field.dom,100);this.field.applyStyles({'width':Math.max(tm.getWidth(ap)+10,20),'textAlign':'right'});this.afterTextEl.el.innerHTML=String.format(this.afterPageText,d.pages);this.field.dom.value=ap;this.first.setDisabled(store.baseParams.start==1);this.prev.setDisabled(store.baseParams.start==1);this.next.setDisabled(store.data.length<store.baseParams.count);this.last.setDisabled(store.data.length<store.baseParams.count);this.loading.enable();},getPageData:function(){var total=this.store.getTotalCount();var activePage,first,firstText,last,lastText;this.which="";if(this.store.data.length>0){first=this.store.data.first();firstText=first.node.attributes.getNamedItem('position').value;last=this.store.data.last();if(last.isCategoryTotal){var lastIndex=this.store.data.indexOf(last);var previous=this.store.getAt(lastIndex-1);lastText=previous.node.attributes.getNamedItem('position').value;}else{lastText=last.node.attributes.getNamedItem('position').value;}}else{firstText="1";lastText="1";}
return{total:total,activePage:firstText,pages:lastText+" of "+total};}});

Ext.nd.DominoUI=function(config){this.uiView={viewName:'',viewUrl:''};this.uiOutline={outlineName:'',outlineUrl:''};this.includeWest=true;this.includeCenter=true;this.includeSouth=true;Ext.apply(this,config);this.init();this.loadLink();};Ext.nd.DominoUI.prototype={init:function(){this.createDominoUI();if(this.uiView.viewName!=''||this.uiView.viewUrl!=''){this.uiView=new Ext.nd.UIView(Ext.apply({viewport:this.viewport,tabPanel:this.tabPanel,container:this.viewContainer,statusPanel:this.statusPanel,showActionBar:true},this.uiView));}
if(this.uiOutline.outlineName!=''||this.uiOutline.outlineUrl!=''){this.uiOutline=new Ext.nd.UIOutline(Ext.apply({container:this.outlinePanel,viewport:this.viewport,outlinePanel:this.outlinePanel,tabPanel:this.tabPanel,uiView:this.uiView,statusPanel:this.statusPanel,listeners:{'openentry':function(uio,type,o){if(type==1){this.uiView=o;}},scope:this}},this.uiOutline));}},createDominoUI:function(){this.viewport=new Ext.Viewport({layout:'border',id:'extnd-viewport',items:[{xtype:'panel',layout:'fit',region:'west',collapsible:true,id:'xnd-outline-panel',title:Ext.nd.Session.currentDatabase.title,split:true,width:200},{xtype:'tabpanel',region:'center',id:'xnd-center-panel',enableTabScroll:true,activeTab:0,items:[{id:'xnd-grid-panel',layout:'fit',title:'Loading view...'}]}]});this.outlinePanel=Ext.getCmp('xnd-outline-panel');this.viewContainer=Ext.getCmp('xnd-grid-panel');this.tabPanel=Ext.getCmp('xnd-center-panel');this.tabPanel.on('beforeremove',this.fixIFrame,this);},loadLink:function(){var href=window.location.href;if(href.indexOf('?')>0||href.indexOf('!')>0){var qs=(href.indexOf('?')>0)?href.split('?')[1]:href.split('!')[1];var ps=Ext.urlDecode(qs);var link=ps['link'];var title=link;if(link){var unid=(link.indexOf('?')>0)?href.split('?')[0]:link;var panelId='pnl-'+unid;var entry=this.tabPanel.getItem(panelId);if(!entry){var iframe=Ext.DomHelper.append(document.body,{tag:'iframe',frameBorder:0,src:link,id:unid,style:{width:'100%',height:'100%'}});this.tabPanel.add({id:panelId,contentEl:iframe.id,title:Ext.util.Format.ellipsis(title,16),layout:'fit',closable:true}).show();var panel=Ext.getCmp(panelId);var dom=Ext.get(unid).dom;var event=Ext.isIE?'onreadystatechange':'onload';dom[event]=(function(){var cd=this.contentWindow||window.frames[this.name];var title;try{title=cd.document.title;if(title!=""){panel.setTitle(Ext.util.Format.ellipsis(title,16));}else{panel.setTitle("Untitled");}}catch(ignore){}}).createDelegate(dom);}else{entry.show();}}}},fixIFrame:function(container,panel){var iFrame=panel.getEl().dom;if(iFrame.src){iFrame.src="javascript:false";}
Ext.removeNode(iFrame);},showError:function(){alert("An error has occured");}};

Ext.nd.data.DominoViewStore=function(config){Ext.nd.data.DominoViewStore.superclass.constructor.call(this,config);};Ext.extend(Ext.nd.data.DominoViewStore,Ext.data.Store,{load:function(options){options=options||{};if(this.fireEvent("beforeload",this,options)!==false){this.storeOptions(options);if(options.params.expand||options.params.expandView){if(this.baseParams.collapse){delete this.baseParams.collapse;}
if(this.baseParams.collapseView){delete this.baseParams.collapseView;}}
if(options.params.collapse||options.params.collapseView){if(this.baseParams.expand){delete this.baseParams.expand;}
if(this.baseParams.expandView){delete this.baseParams.expandView;}}
var p=Ext.apply(this.baseParams,options.params||{});if(this.sortInfo&&this.remoteSort){var pn=this.paramNames;var sortColumn=this.sortInfo.mapping;var colConfig=this.reader.meta.columnConfig[sortColumn];if(colConfig.resortviewunid!=""){return;}
var sortDir=this.sortInfo.direction;if(sortDir=="ASC"){if(p.resortascending){if(p.resortascending!=sortColumn){p.resortascending=sortColumn;if(p.start){delete p.start;delete p.startkey;}
if(p.resortdescending){delete p.resortdescending;}}else{if(p.start){delete p.startkey;}}}else{p.resortascending=sortColumn;delete p.start;delete p.startkey;delete p.resortdescending;}}else{if(p.resortdescending){if(p.resortdescending!=sortColumn){p.resortdescending=sortColumn;if(p.start){delete p.start;delete p.startkey;}
if(p.resortascending){delete p.resortdescending;}}else{if(p.start){delete p.startkey;}}}else{p.resortdescending=sortColumn;delete p.start;delete p.startkey;delete p.resortascending;}}}
this.proxy.load(p,this.reader,this.loadRecords,this,options);}},sort:function(fieldName,dir){var f=this.fields.get(fieldName);if(!dir){if(this.sortInfo&&this.sortInfo.field==f.name){dir=(this.sortToggle[f.name]||"ASC").toggle("ASC","DESC");}else{dir=f.sortDir;}}
this.sortToggle[f.name]=dir;this.sortInfo={field:f.name,direction:dir,mapping:f.mapping};if(!this.remoteSort){this.applySort();this.fireEvent("datachanged",this);}else{this.load(this.lastOptions);}}});

Ext.nd.data.DominoViewXmlReader=function(meta,recordType){Ext.nd.data.DominoViewXmlReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.nd.data.DominoViewXmlReader,Ext.data.XmlReader,{readRecords:function(doc){this.xmlData=doc;var root=doc.documentElement||doc;var q=Ext.DomQuery;var recordType=this.recordType,fields=recordType.prototype.fields;var sid=this.meta.id;var totalRecords=0;if(this.meta.totalRecords){totalRecords=q.selectNumber(this.meta.totalRecords,root,0);}
var records=[];var ns=q.select(this.meta.record,root);for(var i=0,len=ns.length;i<len;i++){var n=ns[i];var values={};var id=sid?q.selectValue(sid,n):undefined;for(var j=0,jlen=fields.length;j<jlen;j++){var f=fields.items[j];var v=this.getViewColumnValue(n,f.mapping,f.defaultValue);v=f.convert(v);values[f.name]=v;}
var record=new recordType(values,id);record.node=n;records[records.length]=record;record.hasChildren=n.attributes.getNamedItem('children');record.isResponse=n.attributes.getNamedItem('response');record.position=n.attributes.getNamedItem('position').value;record.depth=record.position.split('.').length;record.noteid=n.attributes.getNamedItem('noteid').value;record.unid=(n.attributes.getNamedItem('unid'))?n.attributes.getNamedItem('unid').value:null;record.isCategory=(record.hasChildren&&!n.attributes.getNamedItem('unid'))?true:false;record.isCategoryTotal=n.attributes.getNamedItem('categorytotal');}
return{records:records,totalRecords:totalRecords||records.length};},getViewColumnValue:function(node,colNbr,defaultValue){var q=Ext.DomQuery;var type;var data;var oValue={type:'text',data:[]};var entryDataNodes=q.select('entrydata',node);for(var i=0;i<entryDataNodes.length;i++){var cn=q.selectNumber('@columnnumber',entryDataNodes[i]);if(cn==colNbr){var lc=entryDataNodes[i].lastChild;oValue=this.getValue(lc,lc.nodeName);oValue.category=(q.selectValue('@category',entryDataNodes[i])=='true')?true:false;oValue.indent=(q.select('@indent',entryDataNodes[i]))?q.selectNumber('@indent',entryDataNodes[i]):0;}}
return oValue;},getValue:function(node,type){var oValue={type:type,data:[]};if(!node){oValue.data.push('');}else if(node.childNodes&&node.childNodes.length>0&&node.childNodes[0].hasChildNodes()){for(var i=0;i<node.childNodes.length;i++){if(node.childNodes[i].firstChild.nodeName!='#text'){oValue.type=node.childNodes[i].firstChild.nodeName;}else{oValue.type=type;}
oValue.data.push(node.childNodes[i].firstChild.nodeValue);}}else{oValue.type=type;if(node.childNodes&&node.childNodes.length>0){oValue.data.push(node.childNodes[0].nodeValue);}else{oValue.data.push('');}}
return oValue;}});

Ext.nd.Formula=function(sFormula,config){var sForm='Ext.nd.FormulaEval';this.ExecuteInDocumentContext=false;if(sFormula){this.text=sFormula;}else{this.text=null;}
Ext.apply(this,config);var sHREF=location.href;var locNSF=sHREF.toLowerCase().indexOf('.nsf/');var urlStart=sHREF.substring(0,locNSF+5);if(this.unid=='undefined'){var arTmp=sHREF.substring(locNSF+5,sHREF.length).split('/');var arDoc=arTmp[1].split('?');this.unid=arDoc[0];}
if(this.ExecuteInDocumentContext){this.url=urlStart+'($Ext.nd.SwitchForm)/'+this.unid+'?SaveDocument&form='+sForm;}else{this.url=urlStart+sForm+'?CreateDocument';}
this.value=new Array();};Ext.nd.Formula.prototype={eval:function(){var body='formula='+encodeURIComponent(this.text);var ajaxOpts={method:'GET',disableCache:true,success:this.assignValue.createDelegate(this),failure:this.processException,scope:this,url:this.url};Ext.Ajax.request(ajaxOpts);if(this.target!=null){var el=Ext.get(target);var mgr=el.getUpdateManager();mgr.update(this.url,body,this.assignValue.createDelegate(this));}else{Ext.Ajax.request(ajaxOpts);}},onComplete:function(){},assignValue:function(req){var response=req.responseText;var iBodyStartTagBegin=response.indexOf("<body");var sBody=response.substring(iBodyStartTagBegin);var iBodyStartTagEnd=sBody.indexOf(">");var iBodyEndTag=sBody.indexOf("</body>");var result=sBody.substring(iBodyStartTagEnd+1,iBodyEndTag);this.value=result.split('~~');this.onComplete();}};

Ext.nd.UIOutline=function(config){var sess=Ext.nd.Session;var db=sess.currentDatabase;this.dbPath=db.webFilePath;this.filePath=db.filePath;this.outlineName='';this.showIcons=true;this.useOutlineIcons=false;Ext.apply(this,config);this.outlineUrl=(this.outlineUrl)?this.outlineUrl:this.dbPath+this.outlineName;this.addEvents('readentries','beforeopenentry','openentry');Ext.nd.UIOutline.superclass.constructor.call(this);this.init();};Ext.extend(Ext.nd.UIOutline,Ext.util.Observable,{init:function(){Ext.Ajax.request({method:'GET',disableCaching:true,success:this.init2,failure:this.init2,scope:this,url:this.outlineUrl+'?ReadEntries'});},init2:function(o){var response=o.responseXML;this.fireEvent('readentries',this,response);var arEntries=response.getElementsByTagName('outlineentry');var Tree=Ext.tree;var otlId="xnd-outline-"+Ext.id();this.tree=new Tree.TreePanel(Ext.apply({xtype:'treepanel',id:otlId,animate:true,enableDD:true,ddGroup:'TreeDD',autoScroll:true,containerScroll:true,dropConfig:{appendOnly:true,notifyDrop:this.addToFolder.createDelegate(this),onNodeOver:this.addToFolderCheck.createDelegate(this)},root:new Tree.TreeNode({text:'outline root',draggable:false,id:'xnd-outline-root'+Ext.id()}),rootVisible:false},this.treeConfig));if(this.container){this.container.add(this.tree);}
var root=this.tree.getRootNode();var curNode=null;var arNodes=[];for(var i=0;i<arEntries.length;i++){var entry=arEntries.item(i);var extndType=entry.attributes.getNamedItem('type').value;var extndUNID=entry.attributes.getNamedItem('unid');extndUNID=(extndUNID)?extndUNID.value:null;var extndTitle=entry.attributes.getNamedItem('title').value;var tmpextndHref=entry.attributes.getNamedItem('url');var extndHref=(tmpextndHref)?tmpextndHref.value:"";var expandable=entry.attributes.getNamedItem('expandable');var isExpandable=(expandable)?true:false;var isExpanded=(expandable&&expandable.value=='true')?true:false;var tmpextndIcon=entry.attributes.getNamedItem('icon');var extndIcon=(tmpextndIcon)?tmpextndIcon.value:"";var curPosition=entry.attributes.getNamedItem('position').value;var cls;switch(extndType){case"0":cls=(isExpandable)?"folder":"file";break;case"2":cls="file";break;case"20":cls="folder";break;default:cls="file";}
var curNode=new Tree.TreeNode({text:extndTitle,cls:(this.showIcons)?cls:null,iconCls:(this.showIcons)?((this.useOutlineIcons)?'xnd-icon':null):'xnd-no-icon',allowDrag:(extndType=="20")?true:false,allowDrop:(extndType=="20")?true:false,isTarget:true,leaf:false,expanded:isExpanded,extndHref:extndHref,extndType:extndType,extndUNID:extndUNID,extndExpandable:isExpandable,extndPosition:curPosition,icon:(this.showIcons&&this.useOutlineIcons)?extndIcon:null});arNodes[curPosition]=curNode;if(curPosition.indexOf('.')>0){var parentPosition=curPosition.substring(0,curPosition.lastIndexOf('.'));arNodes[parentPosition].appendChild(curNode);}else{root.appendChild(curNode);}}
this.tree.on('click',this.openEntry,this);if(this.container){this.container.doLayout();}},addToFolderCheck:function(n,dd,e,data){var node=n.node;var type=node.attributes.extndType;var unid=node.attributes.extndUNID;if(node.expand){node.expand();}
if(type=="20"){this.isFolder=true;this.folderUNID=unid;return dd.dropAllowed;}else{this.isFolder=false;this.folderUNID='';return dd.dropNotAllowed;}},addToFolder:function(source,e,data){var unids="";if(this.isFolder){var target=e.target;var fromFolder='';if(data.selections){var select=data.selections;fromFolder=source.grid.viewName;for(var i=0;i<select.length;i++){var d=select[i];unids+="unid="+d.unid+"&";}
Ext.Ajax.request({method:'POST',disableCaching:true,success:this.addToFolderSuccess,failure:this.addToFolderFailure,scope:this,params:unids,url:Ext.nd.extndUrl+'FolderOperations?OpenAgent&db='+this.filePath+'&operation=putinfolder'+'&folder='+this.folderUNID+'&fromfolder='+fromFolder});return true;}
if(data.node){return true;}}},addToFolderSuccess:function(response,request){},addToFolderFailure:function(response,request){var failure=Ext.util.JSON.decode(response.responseText);Ext.Msg.alert("Error",failure.error.msg);},openEntry:function(node,e){if(this.fireEvent('beforeopenentry',this,node)!==false){var attributes,extndType,extndHref,extndPosition,panelId,title;attributes=node.attributes;extndHref=attributes.extndHref;extndType=attributes.extndType;extndPosition=attributes.extndPosition;panelId='xnd-pnl'+extndPosition;iframeId='xnd-ifrm'+extndPosition;title=node.text;var opened=0;if(extndType=="2"||extndType=="20"){if(this.uiView){this.uiView.removeFromContainer();var viewUrl=(extndHref.indexOf('?')>0)?extndHref.split('?')[0]:extndHref.split('!')[0];this.uiView=new Ext.nd.UIView({viewport:this.viewport,tabPanel:this.tabPanel,container:this.uiView.container,statusPanel:this.statusPanel,showActionBar:false,toolbar:false,viewUrl:viewUrl});this.tabPanel.setActiveTab(this.uiView.container);opened=1;}}
else if(extndHref!=""){if(this.tabPanel){var entry=this.tabPanel.getItem(panelId);if(!entry){var iframe=Ext.DomHelper.append(document.body,{tag:'iframe',id:iframeId,frameBorder:0,src:extndHref,style:{width:'100%',height:'100%'}});entry=this.tabPanel.add({contentEl:iframe.id,title:Ext.util.Format.ellipsis(title,16),layout:'fit',id:panelId,closable:true}).show();opened=2;}else{entry.show();opened=2;}}}}
var o=(opened==1)?this.uiView:(opened==2)?entry:null;this.fireEvent('openentry',this,opened,o,node);}});Ext.data.Node.prototype.hasChildNodes=function(){var attr=this.attributes;if(attr.extndType=="20"||((attr.extndType=="0"||attr.extndType=="2")&&(this.attributes.extndExpandable))){return true;}else{return false;}};

Ext.nd.UIView=function(config){this.sess=Ext.nd.Session;this.db=this.sess.currentDatabase;this.dbPath=this.db.webFilePath;this.count=40;this.singleSelect=false;this.viewName='';this.viewTitle='';this.showFullCascadeName=false;this.baseParams={};this.adjustedHeight=false;this.dateTimeFormats=Ext.nd.dateTimeFormats;this.showActionbar=true;this.toolbar=false;this.buildActionBarFromDXL=true;this.noDocumentsFoundText="No Documents Found";this.notCategorizedText="(Not Categorized)";this.collapseIcon=Ext.nd.extndUrl+"/resources/images/minus.gif";this.expandIcon=Ext.nd.extndUrl+"/resources/images/plus.gif";this.category=null;this.categoryComboBoxEmptyText='Select a category...';this.showCategoryComboBox=true;this.categoryComboBoxCount=-1;this.showSearch=true;this.searchCount=40;this.isSearching=false;this.searchInPagingToolbar=true;this.showPagingToolbar=true;Ext.apply(this,config);if(this.sm){this.selModel=this.sm;delete this.sm;}
if(this.showSingleCategory){this.category=this.showSingleCategory;delete this.showsSingleCategory;}
if(this.category){this.baseParams.RestrictToCategory=this.category;}
this.viewUrl=(this.viewUrl)?this.viewUrl:this.dbPath+this.viewName;if(this.viewName==''){var vni=this.viewUrl.lastIndexOf('/')+1;this.dbPath=this.viewUrl.substring(0,vni);this.viewName=this.viewUrl.substring(vni);}
if(this.viewTitle==''){this.viewTitle=this.viewName;this.useViewTitleFromDxl=true;}else{this.useViewTitleFromDxl=false;}
this.init();};Ext.nd.UIView.prototype={init:function(){this.getViewDesign();},getViewDesign:function(){Ext.Ajax.request({method:'GET',disableCaching:true,success:this.getViewDesignCB,failure:this.getViewDesignFailure,scope:this,url:this.viewUrl+'?ReadDesign'});},getViewDesignFailure:function(res){},getViewDesignCB:function(o){var q=Ext.DomQuery;var arColumns=q.select('column',o.responseXML);var isCategorized=q.selectNumber('viewdesign/@categories',o.responseXML,0);isCategorized=(isCategorized>0)?true:false;var arColumnConfig=[];var arRecordConfig=[];for(var i=0;i<arColumns.length;i++){if(i==0&&this.category){continue;}
var col=arColumns[i];var columnnumber=q.selectNumber('@columnnumber',col);columnnumber=(this.category)?columnnumber-1:columnnumber;var tmpName=q.selectValue('@name',col,'');var name=(tmpName==undefined)?'columnnumber_'+columnnumber:tmpName;var tmpTitle=q.selectValue('@title',col,"&nbsp;");var title=(tmpTitle==undefined)?"&nbsp;":tmpTitle;var width=q.selectNumber('@width',col)*1.41;width=(width<22)?22:width;var response=q.selectValue('@response',col,false);var responseValue=(response)?true:false;var twistie=q.selectValue('@twistie',col,false);var twistieValue=(twistie)?true:false;var listseparatorValue=q.selectValue('@listseparator',col,'none');var resize=q.selectValue('@resize',col,false);var resizeValue=(resize)?true:false;var sortcategorize=q.selectValue('@sortcategorize',col,false);var sortcategorizeValue=(sortcategorize)?true:false;var resortascending=q.selectValue('@resortascending',col,false);var resortascendingValue=(resortascending)?true:false;var resortdescending=q.selectValue('@resortdescending',col,false);var resortdescendingValue=(resortdescending)?true:false;var resorttoview=q.selectValue('@resorttoview',col,false);var resorttoviewValue=(resorttoview)?true:false;var resortviewunidValue=(resorttoview)?q.selectValue('@resortviewunid',col,""):"";var isSortable=(resortascendingValue||resortdescendingValue)?true:false;var icon=q.selectValue('@icon',col,false);var iconValue=(icon)?true:false;var align=q.selectValue('@align',col,false);var alignValue=(align)?((align=="2")?'center':'right'):'left';var headerAlign=q.selectValue('@headeralign',col,false);var headerAlignValue=(headerAlign)?((headerAlign=="2")?'center':'right'):'left';var tmpDateTimeFormat=q.select('datetimeformat',col)[0];var datetimeformat={};datetimeformat.show=q.selectValue('@show',tmpDateTimeFormat);datetimeformat.date=q.selectValue('@date',tmpDateTimeFormat);datetimeformat.time=q.selectValue('@time',tmpDateTimeFormat);datetimeformat.zone=q.selectValue('@zone',tmpDateTimeFormat);var columnConfig={header:(resorttoviewValue)?title+"<img src='/icons/viewsort.gif' />":title,align:alignValue,dataIndex:name,width:width,renderer:this.dominoRenderer.createDelegate(this),sortable:isSortable,resortascending:resortascendingValue,resortdescending:resortdescendingValue,resortviewunid:resortviewunidValue,sortcategorize:sortcategorizeValue,resize:resizeValue,listseparator:listseparatorValue,response:responseValue,twistie:twistieValue,icon:iconValue,datetimeformat:datetimeformat};var recordConfig={name:name,mapping:columnnumber};arColumnConfig.push(columnConfig);arRecordConfig.push(recordConfig);}
this.dominoView={meta:{root:'viewentries',record:'viewentry',totalRecords:'@toplevelentries',id:'@position',columnConfig:arColumnConfig,isCategorized:isCategorized},recordConfig:arRecordConfig};this.createGrid();},createGrid:function(){var sViewParams=(this.viewParams==undefined)?"":this.viewParams;var viewEntry=Ext.data.Record.create(this.dominoView.recordConfig);var viewEntryReader=new Ext.nd.data.DominoViewXmlReader(this.dominoView.meta,viewEntry);var ds=new Ext.nd.data.DominoViewStore({proxy:new Ext.data.HttpProxy({url:this.viewUrl+'?ReadViewEntries',method:"GET"}),baseParams:this.baseParams,reader:viewEntryReader,remoteSort:true});if(this.grid){try{this.grid.destroy();}catch(e){}}
if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel({singleSelect:this.singleSelect});this.colModel=new Ext.grid.DefaultColumnModel(this.dominoView.meta.columnConfig);}else{var tmpArray=[this.selModel];this.colModel=new Ext.grid.DefaultColumnModel(tmpArray.concat(this.dominoView.meta.columnConfig));}
var panId="xnd-view-"+Ext.id();this.grid=new Ext.grid.GridPanel(Ext.apply({id:panId,layout:'fit',store:ds,colModel:this.colModel,selModel:this.selModel,enableDragDrop:true,ddGroup:'TreeDD',dbPath:this.dbPath,viewName:this.viewName,viewConfig:{},loadMask:true,tbar:(this.toolbar||this.showActionbar||(this.category&&this.showCategoryComboBox))?new Ext.Toolbar({id:'xnd-view-toolbar-'+Ext.id(),plugins:new Ext.nd.Actionbar({noteType:'view',dbPath:this.dbPath,noteName:this.viewName,uiView:this,useDxl:this.buildActionBarFromDXL,useViewTitleFromDxl:this.useViewTitleFromDxl,tabPanel:this.tabPanel||null})}):null,bbar:(this.showPagingToolbar)?new Ext.nd.DominoPagingToolbar({store:ds,pageSize:this.count,isCategorized:this.dominoView.meta.isCategorized,paramNames:{start:'start',limit:'count'}}):null},this.gridConfig));if(this.container){var cmp=this.container.add(this.grid);this.container.setTitle(this.viewTitle);this.container.doLayout();}
this.toolbar=this.grid.getTopToolbar();if(this.showPagingToolbar){this.paging=this.grid.getBottomToolbar();}
this.addToolbarItems();this.grid.addListener('rowdblclick',this.gridHandleRowDblClick,this,true);this.grid.addListener('keydown',this.gridHandleKeyDown,this,true);this.grid.addListener('rowcontextmenu',this.gridHandleRowContextMenu,this,true);this.grid.addListener('headerclick',this.gridHandleHeaderClick,this,true);this.grid.on('cellclick',this.gridHandleCellClick,this,true);if(this.showSearch&&this.searchInPagingToolbar&&this.showPagingToolbar){this.createSearch(this.paging);}
ds.on('load',this.fixViewHeight,this);ds.load({params:{count:this.count,start:1}});},fixViewHeight:function(){if(this.paging&&this.toolbar&&!this.adjustedHeight){var grdEl=this.grid.getEl();var adj=grdEl.getHeight()-grdEl.parent().getHeight();if(adj>0){var grd=grdEl.child('.x-grid3');grd.setHeight(grd.getHeight()-adj);var par=grd.parent();par.setHeight(par.getHeight()-adj);var scroller=grdEl.child('.x-grid3-scroller');scroller.setHeight(scroller.getHeight()-adj);}
this.adjustedHeight=true;}},fixViewHeight_OLD:function(){if(this.viewport){if(this.paging&&this.toolbar&&!this.adjustedHeight){var adj=this.toolbar.getEl().getHeight()+7;var grd=this.grid.getEl().child('.x-grid3');grd.setHeight(grd.getHeight()-adj);var par=grd.parent();par.setHeight(par.getHeight()-adj);var scroller=this.grid.getEl().child('.x-grid3-scroller');scroller.setHeight(scroller.getHeight()-adj);this.adjustedHeight=true;}}else{if(this.paging&&this.toolbar&&!this.adjustedHeight){var grdEl=this.grid.getEl();var adj=grdEl.getHeight()-grdEl.parent().getHeight();var grd=grdEl.child('.x-grid3');grd.setHeight(grd.getHeight()-adj);var par=grd.parent();par.setHeight(par.getHeight()-adj);var scroller=grdEl.child('.x-grid3-scroller');scroller.setHeight(scroller.getHeight()-adj);this.adjustedHeight=true;}}},addToolbarItems:function(){if(this.category&&this.showCategoryComboBox){this.createSingleCategoryComboBox(this.toolbar);}
if(this.showSearch&&!this.searchInPagingToolbar){this.createSearch(this.toolbar);}},createSingleCategoryComboBox:function(toolbar){var store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({method:'GET',url:this.viewUrl+'?ReadViewEntries&CollapseView&count='+this.categoryComboBoxCount}),reader:new Ext.data.XmlReader({record:'viewentry',totalRecords:'@toplevelentries',id:'@position'},[{name:'text'}])});store.load();var cmbId='xnd-search-combo-'+Ext.id();toolbar.add({xtype:'combo',id:cmbId,store:store,displayField:'text',typeAhead:true,mode:'local',triggerAction:'all',emptyText:this.categoryComboBoxEmptyText,value:this.category,selectOnFocus:true,grow:true,resizable:true},'-');var combo=Ext.getCmp(cmbId);combo.on('select',this.handleCategoryChange,this);},createSearch:function(toolbar){var srchId='xnd-vw-search-'+Ext.id();toolbar.add('-',{xtype:'textfield',blankText:"Search view...",name:"xnd-vw-search",id:srchId,width:100,listeners:{'specialkey':this.handleViewSearchKey,scope:this}},{xtype:'button',text:"Search",scope:this,handler:this.handleViewSearch},'-');this.searchField=Ext.getCmp(srchId);},handleViewSearchKey:function(field,e){e.preventDefault();if(e.getKey()==Ext.EventObject.ENTER){this.handleViewSearch();}},handleViewSearch:function(){var qry=this.searchField.getValue();var tb=(this.searchInPagingToolbar&&this.paging)?this.paging:this.toolbar;var baseParams={db:this.dbPath.substring(0,this.dbPath.length-1),vw:this.viewName};if(!this.isSearching){this.oldDataSource=this.grid.getStore();if(this.oldDataSource.baseParams.RestrictToCategory){baseParams=Ext.apply(baseParams,{RestrictToCategory:this.oldDataSource.baseParams.RestrictToCategory});}
var viewEntry=Ext.data.Record.create(this.dominoView.recordConfig);var viewEntryReader=new Ext.nd.data.DominoViewXmlReader(this.dominoView.meta,viewEntry);var ds=new Ext.nd.data.DominoViewStore({proxy:new Ext.data.HttpProxy({url:Ext.nd.extndUrl+'SearchView?OpenAgent',method:"GET"}),baseParams:baseParams,reader:viewEntryReader,remoteSort:false});this.grid.reconfigure(ds,this.grid.getColumnModel());if(this.paging){this.paging.unbind(this.oldDataSource);this.paging.bind(ds);}
this.isSearching=true;this.clearSearchButton=tb.addButton({text:"Clear Results",scope:this,handler:this.handleClearSearch});}
this.grid.getStore().load({params:{query:qry,count:this.searchCount,start:1}});},handleClearSearch:function(){if(this.isSearching){if(this.paging){this.paging.unbind(this.grid.getStore());this.paging.bind(this.oldDataSource);}
this.grid.reconfigure(this.oldDataSource,this.grid.getColumnModel());this.grid.getStore().load({params:{start:1}});this.isSearching=false;this.searchField.reset();this.clearSearchButton.destroy();}},handleCategoryChange:function(combo,record,index){var category=record.data.text;this.grid.getStore().baseParams.RestrictToCategory=category;this.grid.getStore().load({params:{start:1}});},refresh:function(extraParams){var params=Ext.apply({count:this.count},extraParams);this.grid.getStore().load(params);},dominoRenderer:function(value,cell,row,rowIndex,colIndex,dataStore){var colConfig=this.colModel.config[colIndex];if(value.data.length==0&&!colConfig.response){return"";}
var args=arguments;var colConfig=this.colModel.config[colIndex];var prevColConfig=(colIndex>0)?this.colModel.config[colIndex-1]:null;var viewentry=row.node;var dsItem=dataStore.data.items[rowIndex+1];var nextViewentry=(dsItem)?dsItem.node:null;var viewentryPosition=viewentry.attributes.getNamedItem('position').value;var viewentryLevel=viewentryPosition.split('.').length;var sCollapseImage='<img src="'+this.collapseIcon+'" style="vertical-align:bottom; margin-right:4px;"/>';var sExpandImage='<img src="'+this.expandIcon+'" style="vertical-align:bottom; margin-right:4px;"/>';var indentPadding=(20*viewentryLevel)+"px";var indentPaddingNoIcon=(20+(20*viewentryLevel))+"px";if(row.hasChildren&&colConfig.sortcategorize){var extraIndent=(value.indent)?((value.indent>0)?"padding-left:"+value.indent*20+"px;":""):"";cell.attr="style='position: absolute; width: auto; white-space: nowrap; "+extraIndent+"'";if(nextViewentry){var nextViewentryPosition=nextViewentry.attributes.getNamedItem('position').value;var nextViewentryLevel=nextViewentryPosition.split('.').length;if(nextViewentryLevel>viewentryLevel){cell.css=" xnd-view-collapse xnd-view-category";value=sCollapseImage+this.getValue(value,colConfig);}else{cell.css=" xnd-view-expand xnd-view-category";value=sExpandImage+this.getValue(value,colConfig);}}else{cell.css=" xnd-view-expand xnd-view-category";value=sExpandImage+this.getValue(value,colConfig);}}
else if(!row.isCategory&&row.hasChildren&&!row.isResponse&&colConfig.response){if(nextViewentry){var nextViewentryPosition=nextViewentry.attributes.getNamedItem('position').value;var nextViewentryLevel=nextViewentryPosition.split('.').length;if(nextViewentryLevel>viewentryLevel){cell.css="xnd-view-collapse xnd-view-response";value=sCollapseImage;}else{cell.css="xnd-view-expand xnd-view-response";value=sExpandImage;}}else{cell.css="xnd-view-expand xnd-view-response";value=sExpandImage;}}
else if(row.hasChildren&&row.isResponse&&colConfig.response){var extraIndent=(value.indent)?((value.indent>0)?"padding-left:"+(20+(value.indent*20))+"px;":""):"";cell.attr="style='position: absolute; width: auto; white-space: nowrap; "+extraIndent+"'";if(nextViewentry){var nextViewentryPosition=nextViewentry.attributes.getNamedItem('position').value;var nextViewentryLevel=nextViewentryPosition.split('.').length;if(nextViewentryLevel>viewentryLevel){cell.css="xnd-view-collapse xnd-view-response";value=sCollapseImage+this.getValue(value,colConfig);}else{cell.css="xnd-view-expand xnd-view-response";value=sExpandImage+this.getValue(value,colConfig);}}else{cell.css="xnd-view-expand xnd-view-response";value=sExpandImage+this.getValue(value,colConfig);}}
else if(!row.hasChildren&&row.isResponse&&colConfig.response){cell.css="xnd-view-response";var extraIndent=(value.indent)?((value.indent>0)?"padding-left:"+(20+(value.indent*20))+"px;":""):"";cell.attr="style='position: absolute; width: auto; white-space: nowrap; "+extraIndent+"'";value=this.getValue(value,colConfig);}
else{value=this.getValue(value,colConfig);}
return value;},getValue:function(value,colConfig){var dataType,newValue,tmpDate,tmpDateFmt,separator;switch(colConfig.listseparator){case"none":separator='';break;case"space":separator=' ';break;case"comma":separator=',';break;case"newline":separator='<br/>';break;case"semicolon":separator=';';break;default:separator='';}
newValue='';for(var i=0,len=value.data.length;i<len;i++){var sep=(i+1<len)?separator:'';dataType=value.type;var tmpValue=value.data[i];if(colConfig.sortcategorize&&(tmpValue==null||tmpValue=="")){tmpValue=this.notCategorizedText;}
if(colConfig.icon){if(isNaN(parseInt(tmpValue,10))||tmpValue==0){return"";}else{newValue=(tmpValue<10)?"00"+tmpValue:(tmpValue<100)?"0"+tmpValue:(tmpValue>186)?"186":tmpValue;return'<img src="/icons/vwicn'+newValue+'.gif"/>';}}else{switch(dataType){case'datetime':var dtf=colConfig.datetimeformat;if(tmpValue.indexOf('T')>0){tmpDate=tmpValue.split(',')[0].replace('T','.');tmpDateFmt="Ymd.His";}else{tmpDate=tmpValue;tmpDateFmt="Ymd";dtf.show='date';}
var d=new Date(Date.parseDate(tmpDate,tmpDateFmt));switch(dtf.show){case'date':tmpValue=d?d.dateFormat(this.dateTimeFormats.dateFormat):'';break;case'datetime':tmpValue=d?d.dateFormat(this.dateTimeFormats.dateTimeFormat):'';break;}
break;case'text':tmpValue=tmpValue;break;case'number':tmpValue=tmpValue;break;default:tmpValue=tmpValue;}
newValue=newValue+tmpValue+sep;}}
return newValue;},gridHandleKeyDown:function(e){if(e.getTarget().name=="extnd-vw-search"){return;}
var node,row,rowIndex,unid,target;var keyCode=e.browserEvent.keyCode;var charCode=e.charCode;target=e.getTarget();var sm=this.grid.getSelectionModel();row=sm.getSelected();rowIndex=this.grid.getStore().indexOf(row);if(e.altKey){return;}
if(e.ctrlKey&&keyCode==69){if(row){this.openDocument(this.grid,rowIndex,e,true);}
return;}
if(e.ctrlKey){return;}
if(e.shiftKey&&keyCode==16){return;}
switch(keyCode){case e.RETURN:if(row){this.openDocument(this.grid,rowIndex,e);}
break;case e.DELETE:if(row){this.deleteDocument(this.grid,row,e);}
break;case e.BACKSPACE:case e.DOWN:case e.ESC:case e.F5:case e.HOME:case e.LEFT:case e.PAGEDOWN:case e.PAGEUP:case e.RIGHT:case e.UP:case e.TAB:break;case e.SPACE:if(row){if(sm.isSelected(rowIndex)){sm.deselectRow(rowIndex);}else{sm.selectRow(rowIndex);}}
break;default:if(row){Ext.MessageBox.prompt('Search Text','Starts with...',this.quickSearch,this);}}},quickSearch:function(btn,text){var ds=this.grid.getStore();if(btn=='ok'){delete ds.lastOptions.params.start;ds.load({params:Ext.apply(ds.lastOptions.params,{startkey:text})});}},gridHandleHeaderClick:function(grid,colIndex,e){var colConfig=this.colModel.config[colIndex];if(colConfig.resortviewunid!=""){e.stopPropagation();e.stopEvent();this.removeFromContainer();var dbUrl=this.viewUrl;dbUrl=dbUrl.substring(0,dbUrl.lastIndexOf('/')+1);this.uiView=new Ext.nd.UIView({viewport:this.viewport,tabPanel:this.tabPanel,container:this.container,viewUrl:dbUrl+colConfig.resortviewunid,viewParams:"",showActionbar:this.showActionbar,statusPanel:this.statusPanel,gridConfig:(this.gridConfig)?this.gridConfig:null});}},removeFromContainer:function(){if(this.grid){if(this.container){this.container.remove(this.grid.id);}else{this.grid.destroy();}}},gridHandleCellClick:function(grid,rowIndex,colIndex,e){var ecImg=Ext.get(e.getTarget());var cellCat,cellResponse;var cell=false;var options={};var record=grid.getStore().getAt(rowIndex);if(ecImg.dom.tagName=='IMG'){cellCat=ecImg.findParent('td.xnd-view-category');cell=cellCat;if(!cellCat){cellResponse=ecImg.findParent('td.xnd-view-response');cell=cellResponse;}
if(cell){var cellEl=Ext.get(cell);var isExpand=cellEl.hasClass('xnd-view-expand');if(isExpand){options.params=Ext.apply({count:rowIndex+this.count},{expand:record.position});this.grid.getStore().load(options);}else{var isCollapse=cellEl.hasClass('xnd-view-collapse');if(isCollapse){options.params=Ext.apply({count:this.grid.getStore().lastOptions.params.count},{collapse:record.position});this.grid.getStore().load(options);}}}}else{return;}},gridHandleRowContextMenu:function(grid,rowIndex,e){e.stopEvent();var menu=new Ext.menu.Menu({id:'xnd-context-menu'});menu.add({text:'Document Properties',handler:this.gridContextMenuShowDocumentPropertiesDialog,scope:this});menu.addSeparator();menu.add({editMode:false,text:'Open',handler:this.gridContextMenuOpenDocument,scope:this});menu.add({editMode:true,text:'Edit',handler:this.gridContextMenuOpenDocument,scope:this});menu.addSeparator();menu.add({text:'Search This View',handler:this.gridContextMenuSearchView,scope:this});menu.grid=grid;menu.rowIndex=rowIndex;var coords=e.getXY();menu.showAt([coords[0],coords[1]]);},gridContextMenuSearchView:function(){if(!this.showSearch){Ext.MessageBox.alert('Search View','showSearch must be enabled for the view');}else{Ext.MessageBox.prompt('Search View','Query:',this.handleContextMenuSearch,this);}},handleContextMenuSearch:function(btn,text){if(btn=="ok"&&text){this.searchField.setValue(text);this.handleViewSearch();}},gridContextMenuShowDocumentPropertiesDialog:function(){Ext.MessageBox.alert('Document Properties','In a future release, you will see a document properties box.');return;},gridDeleteDocumentSuccess:function(response,options){var row=options.row;var ds=this.grid.getStore();var sm=this.grid.getSelectionModel()
var rowIndex=ds.indexOf(row);if(rowIndex==ds.data.length){sm.selectRow(rowIndex);}else{sm.selectRow(rowIndex+1);}
ds.remove(row);},removeRow:function(row){ds.remove(row);},gridDeleteDocumentFailure:function(o){Ext.MessageBox.alert('Delete Error','The document could not be deleted.  Please check your access.');},gridHandleRowsDeleted:function(row){},gridHandleBeforeLoad:function(dm){},loadView:function(view,dm){if(this.statusPanel){this.statusPanel.setContent('Loading view '+this.viewTitle+'...');this.statusPanel.getEl().removeClass('done');}
ds.loadPage(1);},gridContextMenuOpenDocument:function(action,e){var grid=action.parentMenu.grid;var rowIndex=action.parentMenu.rowIndex;var bEditMode=action.editMode;this.openDocument(grid,rowIndex,e,bEditMode);},openDocument:function(grid,rowIndex,e,bEditMode){var mode=(bEditMode)?'?EditDocument':'?OpenDocument';var title="Opening...";var ds=grid.getStore();var row=grid.getSelectionModel().getSelected();if(row==undefined){return;}
var node=row.node;var unid=node.attributes.getNamedItem('unid');if(!unid){return;}else{unid=unid.value;}
var panelId='pnl-'+unid;var link=this.viewUrl+'/'+unid+mode;if(!this.tabPanel){window.open(link);return;}
var entry=this.tabPanel.getItem(panelId);if(!entry){var iframe=Ext.DomHelper.append(document.body,{tag:'iframe',frameBorder:0,src:link,id:unid,style:{width:'100%',height:'100%'}});this.tabPanel.add({id:panelId,contentEl:iframe.id,title:Ext.util.Format.ellipsis(title,16),layout:'fit',closable:true}).show();var panel=Ext.getCmp(panelId);var dom=Ext.get(unid).dom;var event=Ext.isIE?'onreadystatechange':'onload';dom[event]=(function(){var cd=this.contentWindow||window.frames[this.name];var title=cd.document.title;if(title!=""){panel.setTitle(Ext.util.Format.ellipsis(title,16));}else{panel.setTitle("Untitled");}}).createDelegate(dom);}else{entry.show();}},gridHandleRowDblClick:function(grid,rowIndex,e,bEditMode){this.openDocument(grid,rowIndex,e,bEditMode);},deleteDocument:function(grid,rowIndex,e){var ds=grid.getStore();var row=grid.selModel.getSelected();var node=row.node;var unid=node.attributes.getNamedItem('unid');if(!unid){return;}else{unid=unid.value;}
var deleteDocUrl=this.viewUrl+'/'+unid+'?DeleteDocument';var docExists=(this.tabPanel)?this.tabPanel.findById("pnl-"+unid):null;if(docExists){Ext.MessageBox.alert("Delete Error","You have this document open in another tab.  Please close the document first before deleting.");}else{Ext.Ajax.request({method:'GET',disableCaching:true,success:this.gridDeleteDocumentSuccess,failure:this.gridDeleteDocumentFailure,row:row,scope:this,url:deleteDocUrl});}}};

Ext.nd.UIWorkspace=function(config){Ext.apply(this,config);};Ext.nd.UIWorkspace.prototype={PickList:function(config){var dialog,cb;this.sess=Ext.nd.Session;this.db=this.sess.currentDatabase;this.server="";this.dbPath=this.db.webFilePath;this.viewName="";this.width=500;this.height=400;this.shadow=true;this.minWidth=500;this.minHeight=400;this.showActionbar=false;this.showSearch=true;this.viewOptions="";this.type="custom";this.multipleSelection=false;this.title="PickList";this.prompt="Please make your selection(s) and click <OK>.";this.column=0;this.category=null;this.emptyText='Select a category...';this.showCategoryComboBox=false;this.categoryComboBoxCount=-1;Ext.apply(this,config);switch(this.type){case"custom":this.viewUrl=(this.viewUrl)?this.viewUrl:this.dbPath+this.viewName;break;case"names":this.viewUrl=this.sess.addressBooks[0].webFilePath+'($PeopleGroupsFlat)';this.title="Select Name";this.column=1;break;default:this.viewUrl=(this.viewUrl)?this.viewUrl:this.dbPath+this.viewName;}
if(this.callback){cb=this.callback;this.callback=false;}
var pl=Ext.get('xnd-picklist');if(pl){pl.remove();}
if(this.uiView){if(this.uiView.grid){this.uiView.grid.destroy();}}
var namesPanel=new Ext.FormPanel({id:'xnd-picklist-prompt',region:'north',frame:true,height:70,labelWidth:150,bodyStyle:{padding:5},items:[{xtype:'combo',fieldLabel:'Choose address book',anchor:'95%'},{xtype:'textfield',fieldLabel:'Find names starting with',anchor:'95%'}]});var east={};if(this.multipleSelection){east={region:'east',layout:'fit',html:'&nbsp;',width:this.width/2}}
if(!dialog){dialog=new Ext.Window({id:'xnd-picklist',layout:'border',modal:true,width:this.width,height:this.height,shadow:this.shadow,minWidth:this.minWidth,minHeight:this.minHeight,title:this.title,items:[(this.type=='names')?namesPanel:{region:'north',height:27,xtype:'panel',title:this.prompt,id:'xnd-picklist-prompt'},{region:'center',layout:'fit',xtype:'panel',header:false,id:'xnd-picklist-view'},east]});dialog.addButton('OK',handleOK,this);dialog.addButton('Cancel',handleCancel,this);this.uiView=new Ext.nd.UIView(Ext.apply({container:Ext.getCmp('xnd-picklist-view'),header:false,viewUrl:this.viewUrl,gridHandleRowDblClick:handleOK.createDelegate(this),category:this.category,emptyText:this.emptyText,showCategoryComboBox:this.showCategoryComboBox,categoryComboBoxCount:this.categoryComboBoxCount,showActionbar:this.showActionbar,showSearch:this.showSearch},this.viewOptions));}
dialog.show();function handleOK(){var arSelections=this.uiView.grid.getSelections();var arReturn=new Array();dialog.hide();for(var i=0;i<arSelections.length;i++){var map=arSelections[i].fields.keys[this.column];var data=arSelections[i].data[map].data;for(var d=0;d<data.length;d++){arReturn.push(data[d]);}}
if(cb){cb(arReturn);}else{return arReturn;}}
function handleCancel(){dialog.hide();if(cb){cb(null);}else{return null;}}},Prompt:function(){var cb;this.type="ok";if(arguments.length>0){if(typeof arguments[0]=="object"){Ext.apply(this,arguments[0]);}else if(arguments.length>=3){this.type=arguments[0];this.title=arguments[1];this.prompt=arguments[2];}}
if(this.callback){cb=this.callback;this.callback=false;}
this.type=this.type.toLowerCase();switch(this.type){case"ok":Ext.MessageBox.alert(this.title,this.prompt,cb);break;default:Ext.MessageBox.alert("type '"+this.type+"', not yet supported");}},currentDocument:function(){return Ext.nd.UIDocument;}};Ext.nd.UIWorkspace.PickListStrings=Ext.nd.UIWorkspace.PickList

Ext.nd.Actionbar=function(config){this.sess=Ext.nd.Session;this.db=this.sess.currentDatabase;this.dbPath=this.db.webFilePath;this.noteType='';this.noteName='';this.useDxl=true;this.useViewTitleFromDxl=false;this.convertFormulas=true;Ext.apply(this,config);Ext.nd.Actionbar.superclass.constructor.call(this);this.noteUrl=(this.noteUrl)?this.noteUrl:this.dbPath+this.noteName;if(this.noteName==''){var vni=this.noteUrl.lastIndexOf('/')+1;this.dbPath=this.noteUrl.substring(0,vni);this.noteName=this.noteUrl.substring(vni);}};Ext.extend(Ext.nd.Actionbar,Ext.util.Observable,{init:function(toolbar){this.toolbar=toolbar;this.createToolbar();},createToolbar:function(){if(!this.useDxl){this.toolbar.on('render',this.createToolbarFromDocument,this);return;}
Ext.Ajax.request({method:'GET',disableCaching:true,success:this.createToolbarFromDxl,failure:this.createToolbarFailure,scope:this,url:Ext.nd.extndUrl+'DXLExporter?OpenAgent&db='+this.dbPath+'&type='+this.noteType+'&name='+this.noteName});},createToolbarFailure:function(res){},createToolbarFromDocument:function(o){var actionbar,arActions;var q=Ext.DomQuery;actionbar=this.getDominoActionbar();if(!actionbar){this.toolbar.add({text:'&nbsp;'});return;}
arActions=q.select('a',actionbar);var hasActionbar=(arActions.length>0)?true:false;var arJSONActions=[];var curLevelTitle='';var isFirst=false;for(var i=0;i<arActions.length;i++){var action=arActions[i];var title=action.lastChild.nodeValue;var slashLoc=(title)?title.indexOf('\\'):-1;var imageRef=q.selectValue('img/@src',action,null);imageRef=(imageRef==null)?null:(imageRef&&imageRef.indexOf('/')==0)?imageRef:this.dbPath+imageRef;var cls=(title==null)?'x-btn-icon':(imageRef)?'x-btn-text-icon':null;if(slashLoc>0){isSubAction=true;var arLevels=title.split('\\');var iLevels=arLevels.length;var tmpCurLevelTitle=title.substring(0,slashLoc);title=title.substring(slashLoc+1);if(tmpCurLevelTitle!=curLevelTitle){curLevelTitle=tmpCurLevelTitle
isFirst=true;}else{isFirst=false;}}else{isSubAction=false;curLevelTitle='';}
var sHref,sOnclick,oOnclick,arOnclick;sHref=action.getAttribute('href',2);if(sHref!=''){sOnclick="location.href = '"+sHref+"';";}else{oOnclick=action.attributes['onclick'];if(oOnclick){sOnclick=oOnclick.nodeValue;}else{sOnclick=''}
if(sOnclick.indexOf('return _doClick')==0){sOnclick=sOnclick.substring(7);}
arOnclick=sOnclick.split('\r');var len=arOnclick.length;if(arOnclick[len-1]=='return false;'){arOnclick.splice(arOnclick.length-1,1);}
sOnclick=arOnclick.join('\r');}
var handler=function(bleh){eval(bleh);}.createCallback(sOnclick);if(isSubAction){if(isFirst){if(i>0){arJSONActions.push('-');}
arJSONActions.push({text:curLevelTitle,menu:{items:[{text:title,cls:cls,icon:imageRef,handler:handler}]}});}else{arJSONActions[arJSONActions.length-1].menu.items.push({text:title,cls:cls,icon:imageRef,handler:handler});}}else{if(i>0){arJSONActions.push('-');}
arJSONActions.push({text:title,cls:cls,icon:imageRef,handler:handler});}}
for(var i=0;i<arJSONActions.length;i++){this.toolbar.add(arJSONActions[i]);}
if(hasActionbar){this.removeDominoActionbar(actionbar);}},removeDominoActionbar:function(actionbar){if(actionbar){Ext.get(actionbar).remove();Ext.get(Ext.query('hr')[0]).remove();}},getDominoActionbar:function(){var frm=document.forms[0];var isFirstTable=false;var q=Ext.DomQuery;var cn=frm.childNodes;var actionbar;var bTest1=false;var bTest2=false;var bTest3=false;var bTest4=false;for(var i=0;i<cn.length;i++){var c=cn[i];if(c.nodeType==1){if(!bTest1){if(c.tagName=='TABLE'){actionbar=c;var arRows=q.select('tr',actionbar);if(arRows.length!=1){break;}else{bTest1=true;bTest2=true;continue;}}else if(c.tagName=='INPUT'&&q.selectValue('@type',c,'')=='hidden'){continue;}else{break;}}else{if(c.tagName=='HR'){bTest3=true;}
break;}}
if(bTest1&&bTest2&&bTest3){break;}}
if(bTest1&&bTest2&&bTest3){var arTDs=q.select('td',actionbar);var arActions=q.select('a',actionbar);if(arTDs.length==arActions.length){bTest4=true;return actionbar;}else{return false;}}else{return false;}},setViewName:function(response){var q=Ext.DomQuery;var vwName=q.selectValue('view/@name',response);if(typeof vwName=='undefined'){vwName=q.selectValue('folder/@name',response);}
if(!this.uiView.showFullCascadeName){var bsLoc=vwName.lastIndexOf('\\');if(bsLoc!=-1){vwName=vwName.substring(bsLoc+1);}}
this.tabPanel.activeTab.setTitle(vwName)},createToolbarFromDxl:function(o){var actionbar,arActions;var q=Ext.DomQuery;response=o.responseXML;arActions=q.select('action',response);if(this.noteType=='view'&&this.tabPanel&&this.useViewTitleFromDxl){this.setViewName(response);}
var arJSONActions=[];var curLevelTitle='';var isFirst=false;for(var i=0;i<arActions.length;i++){var show=true;var action=arActions[i];var title=q.selectValue('@title',action,"");var hidewhen=q.selectValue('@hide',action,null);var showinbar=q.selectValue('@showinbar',action,null);var iconOnly=q.select('@onlyiconinbar',action);var icon=q.selectNumber('@icon',action,null);var imageRef=q.selectValue('imageref/@name',action,null);var syscmd=q.selectValue('@systemcommand',action,null);if(hidewhen){var arHide=hidewhen.split(' ');for(var h=0;h<arHide.length;h++){if(arHide[h]=='web'||(arHide[h]=='edit'&&Ext.nd.UIDocument.editMode)||(arHide[h]=='read'&&!Ext.nd.UIDocument.editMode)){show=false;}}}
if(showinbar=='false'){show=false;}
var lotusscript=Ext.DomQuery.selectValue('lotusscript',action,null);if(lotusscript){show=false;}
if(icon){if(icon<10){imageRef="00"+icon;}else if(icon<100){imageRef="0"+icon;}else{imageRef=""+icon;}
imageRef="/icons/actn"+imageRef+".gif";}else{if(imageRef){imageRef=(imageRef.indexOf('/')==0)?imageRef:this.dbPath+imageRef;}}
if(show&&syscmd==null){var slashLoc=title.indexOf('\\');if(slashLoc>0){isSubAction=true;var arLevels=title.split('\\');var iLevels=arLevels.length;var tmpCurLevelTitle=title.substring(0,slashLoc);title=title.substring(slashLoc+1);if(tmpCurLevelTitle!=curLevelTitle){curLevelTitle=tmpCurLevelTitle
isFirst=true;}else{isFirst=false;}}else{isSubAction=false;curLevelTitle='';}
var tmpOnClick=Ext.DomQuery.selectValue('javascript',action,null);var handler;if(tmpOnClick){handler=function(bleh){eval(bleh)}.createCallback(tmpOnClick);}else if(this.convertFormulas){var formula=Ext.DomQuery.selectValue('formula',action,null);if(formula){var cmdFrm=formula.match(/\@Command\(\[(\w+)\](?:;"")*(?:;"(.+?)")*\)/);if(cmdFrm&&cmdFrm.length){switch(cmdFrm[1]){case'Compose':handler=this.openForm.createDelegate(this,[cmdFrm[2]]);break;case'EditDocument':handler=this.openDocument.createDelegate(this,[cmdFrm[2]?((cmdFrm[2]=="1")?true:false):true]);break;case'FileCloseWindow':handler=this.closeDocument.createDelegate(this);break;case'FileSave':handler=this.saveDocument.createDelegate(this);break;case'FilePrint':case'FilePrintSetup':handler=this.print.createDelegate(this);break;case'OpenView':case'RunAgent':default:show=false;}}}}
if(isSubAction){if(isFirst){if(i>0){arJSONActions.push('-');}
arJSONActions.push({text:curLevelTitle,menu:{items:[{text:title,cls:(icon||imageRef)?'x-btn-text-icon':null,icon:imageRef,handler:handler}]}});}else{arJSONActions[arJSONActions.length-1].menu.items.push({text:title,cls:(icon||imageRef)?'x-btn-text-icon':null,icon:imageRef,handler:handler});}}else{if(i>0){arJSONActions.push('-');}
arJSONActions.push({text:title,cls:(icon||imageRef)?'x-btn-text-icon':null,icon:imageRef,handler:handler});}}}
for(var i=0;i<arJSONActions.length;i++){this.toolbar.add(arJSONActions[i]);}
if(this.noteType=='form'){this.removeDominoActionbar(this.getDominoActionbar());}},openForm:function(form){var src=this.dbPath+form+'?OpenForm';if(this.tabPanel){var iframe=Ext.DomHelper.append(this.tabPanel.body.dom,{tag:'iframe',frameBorder:0,src:src,id:'xnd-open-form-'+Ext.id(),style:{width:'100%',height:'100%'}});this.tabPanel.add({id:'xnd-form-pnl-'+Ext.id(),contentEl:iframe.id,title:'New '+form,layout:'fit',closable:true}).show();}else{window.open(src);}},openDocument:function(editMode){if(this.noteType=='view'){this.openDocumentFromView(editMode);return;}
var mode=(editMode)?'?EditDocument':'?OpenDocument';var unid=Ext.nd.UIDocument.document.universalID;var pnlId='pnl-'+unid;var src=this.dbPath+'0/'+unid+mode;if(this.tabPanel){var pnl=this.tabPanel.getItem(pnlId);if(pnl){var iframe=window.parent.Ext.get(unid);if(iframe){iframe.dom.src=src;}
pnl.show();}else{var iframe=Ext.DomHelper.append(this.tabPanel.body.dom,{tag:'iframe',frameBorder:0,src:src,id:unid,style:{width:'100%',height:'100%'}});this.tabPanel.add({id:pnlId,contentEl:iframe.id,title:'FixMe',layout:'fit',closable:true}).show();}}else{location.href=src;}},openDocumentFromView:function(editMode){var grid=this.uiView.grid;var row=grid.selModel.getSelected();var rowIndex=grid.getStore().indexOf(row);var e=null;this.uiView.openDocument(grid,rowIndex,e,editMode);},closeDocument:function(){if(this.tabPanel){this.tabPanel.remove(this.tabPanel.getActiveTab());}else{try{window.back();}catch(e){window.close();}}},saveDocument:function(){document.forms[0].submit();},print:function(){window.print();},unsupportedAtCommand:function(formula){Ext.Msg.alert('Error','Sorry, the @command "'+formula+'" is not currently supported by Ext.nd');}});

Ext.nd.Form=function(config){var sess=Ext.nd.Session;var db=sess.currentDatabase;this.uidoc=Ext.nd.UIDocument;this.dbPath=db.webFilePath;this.showActionbar=true;this.convertFields=true;this.applyDominoKeywordRefresh=true;this.toolbar=false;this.toolbarContainer;this.headerContainer;this.form=this.uidoc.form;this.formName=this.uidoc.formName||document.forms[0].name.substring(1)
this.dateTimeFormats=Ext.nd.dateTimeFormats;if(typeof this.uidoc.formName=='undefined'){if(document.forms.length==0||document.forms[0].name.substring(1)==''||document.forms[0].name.substring(1)=='DominoForm'){var href=location.href.toLowerCase();var search=location.search.toLowerCase();var start=href.indexOf(this.dbPath.toLowerCase())+this.dbPath.length;var end=(search!="")?href.indexOf(search):href.length;this.formName=href.substring(start,end);}else{this.formName=document.forms[0].name.substring(1);}}else{this.formName=this.uidoc.formName}
Ext.apply(this,config);this.formUrl=(this.formUrl)?this.formUrl:this.dbPath+this.formName;};Ext.nd.Form.prototype={render:function(){if(document&&document.body){document.body.style.visibility="hidden";}
var msg=Ext.MessageBox.wait("Loading document...");this.buildLayout();if(this.convertFields){this.doConvertFields();}
msg.hide();if(document&&document.body){document.body.style.visibility="";}},buildLayout:function(){var dh=Ext.DomHelper;var ui=dh.append(document.body,{tag:'div',id:'xnd-form-ui'});Ext.get(ui).dom.appendChild(this.form);this.layout=new Ext.Viewport({layout:'border',items:[{region:'center',id:'xnd-form-pnl',xtype:(this.autoTab)?'tabpanel':'panel',contentEl:ui.id,tbar:(this.showActionbar||this.toolbar)?new Ext.Toolbar({id:'xnd-form-toolbar',plugins:new Ext.nd.Actionbar({noteType:'form',noteName:this.formName,uiDocument:this.uidoc,useDxl:true,tabPanel:(window.parent&&window.parent.parent&&window.parent.parent.Ext)?window.parent.parent.Ext.getCmp('xnd-center-panel'):undefined})}):null,autoScroll:true}]});},doConvertFields:function(){var dh=Ext.DomHelper;var el,arClasses,cls;var q=Ext.DomQuery;var converted;var allElements=this.form.elements;for(var i=0;i<allElements.length;i++){el=allElements[i];switch(el.tagName){case'SELECT':if(!this.convertFromClassName(el,false)){this.convertSelectToComboBox(el,true);}
break;case'TEXTAREA':if(!this.convertFromClassName(el,false)){var ta=new Ext.form.TextArea({resizable:true});ta.applyToMarkup(el);}
break;case'INPUT':if(!this.convertFromClassName(el,false)){var type=el.getAttribute('type');switch(type){case'hidden':break;case'checkbox':break;default:var f=new Ext.form.Field();f.applyToMarkup(el);break;}}
break;default:if(!this.convertFromClassName(el,false)){var f=new Ext.form.Field();f.applyToMarkup(el);}
break;}}
var xndElements=q.select('*[class*=xnd-]');for(var i=0;i<xndElements.length;i++){el=xndElements[i];this.convertFromClassName(el,true);}},convertFromClassName:function(el,doConvert){var arClasses=el.className.split(' ');var converted=false;for(var c=0;c<arClasses.length;c++){cls=arClasses[c];switch(cls){case'xnd-combobox':if(doConvert){this.convertSelectToComboBox(el,true);}
converted=true;break;case'xnd-combobox-appendable':if(doConvert){this.convertSelectToComboBox(el,false);}
converted=true;break;case'xnd-date':if(doConvert){var dt=new Ext.form.DateField({selectOnFocus:true,format:this.dateTimeFormats.dateFormat});dt.applyToMarkup(el);}
converted=true;break;case'xnd-number':if(doConvert){var nbr=new Ext.form.NumberField({selectOnFocus:true});nbr.applyToMarkup(el);}
converted=true;break;case'xnd-time':if(doConvert){var tm=new Ext.form.TimeField({increment:60,selectOnFocus:true});tm.applyToMarkup(el);}
converted=true;break;case'xnd-htmleditor':if(doConvert){this.convertToHtmlEditor(el);}
converted=true;break;case'xnd-names':if(doConvert){var nm=new Ext.form.TriggerField();nm.onTriggerClick=this.createNamePicker.createDelegate(this,[nm]);nm.applyToMarkup(el);}
converted=true;break;case'xnd-ignore':converted=true;break;default:break;}}
return converted;},convertToHtmlEditor:function(el){Ext.QuickTips.init();var tag=el.tagName.toLowerCase();var ed;if(tag=='div'){ed=new Ext.form.HtmlEditor({renderTo:el});}else{var dh=Ext.DomHelper;var heContainer=dh.insertBefore(el,{tag:'div',style:{width:500}},true);heContainer.dom.appendChild(el);Ext.get(el).setStyle({width:510});ed=new Ext.form.HtmlEditor();ed.applyToMarkup(el);ed.on('beforepush',function(editor,html){var htmlBefore="[<div class='xnd-htmleditor-read'>";var htmlAfter="</div>]";var start=htmlBefore.length;var end=html.length-htmlAfter.length;if(html.indexOf(htmlBefore)==0){html=html.substring(start,end)}
editor.getEditorBody().innerHTML=html;return false;});ed.on('beforesync',function(editor,html){editor.el.dom.value="[<div class='xnd-htmleditor-read'>"
+html+"</div>]";return false;});}},createNamePicker:function(el){var ws=new Ext.nd.UIWorkspace();ws.PickList({type:'names',callback:this.handlePickList.createDelegate(el)})},handlePickList:function(arStrings,field){var tmp="";var sep=","
if(arStrings!=null){for(var i=0;i<arStrings.length;i++){tmp+=sep+arStrings[i];}}
this.setValue(tmp.substring(sep.length))},convertSelectToComboBox:function(el,forceSelection){var cb=new Ext.form.ComboBox({typeAhead:true,triggerAction:'all',transform:el,forceSelection:forceSelection,resizable:true});var extcallback=null;if(this.applyDominoKeywordRefresh){var attr=el.attributes;if(attr){var onChange=attr['onchange'];if(onChange&&onChange.nodeValue!=null){var sOnChange=onChange.nodeValue;extcallback=function(bleh){eval(bleh);}.createCallback(sOnChange);}}}
var value=(cb.getValue())?cb.getValue():cb.getRawValue();if(cb.hiddenName){var field=Ext.get(cb.hiddenName);field.dom.value=value;}
cb.on('select',function(){var value=(this.getValue())?this.getValue():this.getRawValue();if(cb.hiddenName){var field=Ext.get(this.hiddenName);field.dom.value=value;}
if(typeof extcallback=='function'){Ext.MessageBox.wait("Refreshing document...");extcallback();}});}};

Ext.namespace("Ext.nd.form");Ext.nd.form.ViewSuggest=function(el,config){this.el=el;this.agentUrl="Suggest?OpenAgent";this.unique=true;Ext.apply(this,config);this.init();};Ext.nd.form.ViewSuggest.prototype={init:function(){if(!this.url){var sess=Ext.nd.Session;var db=sess.currentDatabase;this.url=Ext.nd.extndUrl+this.agentUrl;this.db=db.filePath;}
if(!this.view||!this.field){Ext.Msg.alert("ViewSuggest Error","Required parameter (view or fieldname) was omitted from Ext.nd.form.ViewSuggest");return;}
if(this.extraFields){if(this.unique){Ext.Msg.alert("ViewSuggest Error","You cannot use extra fields when unique is set!");return;}
this.flds=[this.field].push(this.extraFields);}else{this.flds=[this.field];}
this.unique=this.unique?1:0;this.baseParams={view:this.view,fields:this.flds,unique:this.unique};if(this.db){this.baseParams.db=this.db;}
this.store=new Ext.data.Store(Ext.apply({proxy:new Ext.data.HttpProxy({url:this.url}),reader:new Ext.data.JsonReader({root:'root'},this.flds),baseParams:Ext.apply(this.baseParams,this.extraParams),remoteSort:false},this.storeConfig));this.combo=new Ext.form.ComboBox(Ext.apply({store:this.store,displayField:this.field,loadingText:"Loading...",forceSelection:true,mode:'remote',minChars:3,hideTrigger:true,listWidth:200,width:200,applyTo:this.el},this.comboConfig));}};
