
/* - ++resource++nmha.roster.js/nmha.js - */
// http://www.nmhanet.org/portal_javascripts/++resource++nmha.roster.js/nmha.js?original=1
dojo.require("tgc.data.QueryWriteStore");dojo.require("dojo.data.ItemFileReadStore");dojo.require("dojox.grid.DataGrid");dojo.require("dojox.grid.cells.dijit");dojo.require("dijit.form.Button");(function(){if(typeof nmha=="undefined"){this.nmha={_scopeName:"nmha",grid:null,store:null}}
var $=nmha;var _LTRS='bcdfghjkmnpqrstvwxz';$.generateMemberId=function(v){var s=[];var l=_LTRS.length;v=v.replace(/[^A-Za-z0-9 ]/g, " ").replace(/ +/," ");dojo.forEach(v.split(' '), function(item){if(item){s.push(item[0].toLowerCase())}});while(s.length<4){s.push(_LTRS[Math.ceil(Math.random()*l)])}
s.push(Math.ceil(Math.random() * 10000+980));return s.join('')};$._memtypes={identifier:'abbrev',label:'name',items:[{abbrev:'ivm',name:"Institutional Voting Member"},{abbrev:'allied',name:"Allied Organization"},{abbrev:'affco',name:"Affiliated Organization (Corporate Office)"},{abbrev:'afforg',name:"Affiliated Organization"},{abbrev:'affgroup',name:"Affiliated Group"},{abbrev:'nonmem',name:"Nonmember Group"}]};$.memtypestore=new dojo.data.ItemFileReadStore({data:$._memtypes});$._copyItem=function(item){var r=dojo.mixin({},item);delete r[$.store._S];delete r[$.store._0];delete r[$.store._N];return r};$._makestore=function(storeURL,actionURL){$.store=new tgc.data.QueryWriteStore({requestMethod:"post",doClientSorting:true,doClientPaging:true,url:storeURL});$.store._saveCustom=function(success,failure){var items={add:[],update:[],remove:[]};for(identity in $.store._pending._modifiedItems){var item=$.store._itemsByIdentity[identity];items.update.push($._copyItem(item))}
for(identity in $.store._pending._newItems){var item=$.store._itemsByIdentity[identity];items.add.push($._copyItem(item))}
for(identity in $.store._pending._deletedItems){var item=$.store._pending._deletedItems[identity];items.remove.push($._copyItem(item))}
var request=dojo.toJson(items);var postArgs={url:actionURL,content:{action:request}};var handler=dojo.xhrPost(postArgs);handler.addCallback(success);handler.addErrback(failure)}};$.doSave=function(){$.buttonsDisable();$.store.save({onComplete: function(){nmha.grid.setSortInfo(0);nmha.grid.selection.clear();nmha.store.close(null);nmha.grid.filter({id:'*'},true)}})};$.doRevert=function(){$.buttonsDisable();$.store.revert()};$.rowEdit=function(e){if(e.cellIndex==-1){var item=$.grid.getItem(e.rowIndex);$.showUpdateDialog(item)}};$.buttonsEnable=function(e){$._btnsave.attr('disabled',false);$._btncancel.attr('disabled',false);$.fieldsDisable()};$.buttonsDisable=function(e){$._btnsave.attr('disabled',true);$._btncancel.attr('disabled',true);$.fieldsEnable()};$.fieldsEnable=function(e){if($._filterLName){$._filterLName.attr('disabled',false);$._filterOrg.attr('disabled',false)}};$.fieldsDisable=function(e){if($._filterLName){$._filterLName.attr('disabled',true);$._filterOrg.attr('disabled',true)}};$.showAddDialog=function(){$.theDialog.reset();$.theDialog.theItem=null;$.theDialog.attr('title',$._dialogTitles.add);$.theDialog.show();if($.theDialog.attr('value').notes){$.theDialog.attr('value',{notes:'',_dirinclude:['on']})} else{$.theDialog.attr('value',{_dirinclude:['on']})}};$.showUpdateDialog=function(item){$.theDialog.reset();$.theDialog.theItem=item;$.theDialog.attr('title',$._dialogTitles.update);$.theDialog.show();item._dirinclude=[item.dirinclude?'on':'off'];if($.theDialog.isLoaded){$.theDialog.attr('value',item)} else{var conn=dojo.connect($.theDialog,"onLoad",
function(){$.theDialog.attr('value',item);dojo.disconnect(conn)})}};$.setMemCode=function(e){var d=dijit.byId('nmha-mem-code');if(!d.attr('value')&&e.attr('value')){var v=e.attr('value');var code=$.generateMemberId(v);d.attr('value',code)}};$.memberProcess=function(){var data=$.theDialog.attr('value');var store=$.store;var item=$.theDialog.theItem;data.dirinclude=data._dirinclude[0]==='on';delete data._dirinclude;if(item){delete item._dirinclude;for(var k in data){store.setValue(item,k,data[k])}
$.theDialog.theItem=null} else{store.newItem(data)}
$.theDialog.hide()};$.do_roster=function(params){var rosterdiv=dojo.byId(params.roster);$._makestore("/@@nmha-roster.json","/@@nmha-roster-action");var glayout=[[{name:'Name',field:'name',colSpan:3,width:'230px',editable:true},{name:'Address',field:'address',colSpan:3,width:'200px',editable:true},{name:'Phone',field:'phone',width:'96px',editable:true},{name:'FAX',field:'fax',width:'96px',editable:true}],[{name:'Member ID',field:'code',width:'20%',editable:true},{name:'Type',field:'memtype',width:'72px',editable:true},{name:'Classification',field:'classification',width:'80px',editable:true},{name:'City',field:'city',width:'130px',editable:true},{name:'State',field:'state',width:'30px',editable:true},{name:'Zipcode',field:'zip',width:'80px',editable:true},{name:'Web site',field:'website',width:'194px',colSpan:2,editable:true}]];$.grid=new dojox.grid.DataGrid({store:$.store,structure:glayout,style:'height:420px;width:100%;font-size:90%;',rowSelector:"18px",rowsPerPage:20},rosterdiv);$.grid.startup();dojo.connect($.grid,"onRowDblClick",$.rowEdit);var _rostersave=function(e){$.doSave();return true};var _rosterrevert=function(e){$.doRevert();return true};var _rosteradd=function(e){$.showAddDialog();return true};var _rosterdel=function(e){$.grid.removeSelectedRows();return true};$._btnsave=new dijit.form.Button({onClick:_rostersave},'roster-save');$._btncancel=new dijit.form.Button({onClick:_rosterrevert},'roster-cancel');$._btnadd=new dijit.form.Button({onClick:_rosteradd},'roster-add');$._btndel=new dijit.form.Button({onClick:_rosterdel},'roster-delete');dojo.connect($.store,"onNew",$.buttonsEnable);dojo.connect($.store,"onSet",$.buttonsEnable);dojo.connect($.store,"onDelete",$.buttonsEnable);dojo.connect($.store,"save",$.buttonsDisable);dojo.connect($.store,"revert",$.buttonsDisable);dojo.query(".documentActions").style({display:'none'});dojo.query("#nmharoster-right").style({'float':'right'});dojo.query("#nmharoster-left").style({'float':'left'});$._dialogTitles={add:'Add Member',update:'Edit Member'};$.theDialog=new dijit.Dialog({title:$._dialogTitles.add,href:"++resource++nmha.roster.js/adddlg.html"});$.theDialog.startup();dojo.style($.theDialog.domNode,{overflow:'hidden'});$.buttonsDisable()};$.do_contacts=function(params){var contactsdiv=dojo.byId(params.contacts);$._makestore("/@@nmha-contacts.json","/@@nmha-contacts-action");$.associationstore=$.memtypestore=new dojo.data.ItemFileReadStore({url:"/@@roster-associations"});var glayout=[[{name:'First Name',field:'firstname',width:'90px',editable:true},{name:'Last Name',field:'lastname',width:'130px',editable:true},{name:'Organization',field:'association',width:'230px'},{name:'Job Title',field:'jobtitle',width:'96px',editable:true},{name:'Phone',field:'phone',width:'96px',editable:true},{name:'FAX',field:'fax',width:'96px',editable:true},{name:'Email',field:'email',width:'100px',editable:true},{name:'Board',field:'board',width:'100px',editable:true},{name:'Assistant',field:'assistant',editable:true},{name:'Asst Email',field:'assistant_email',editable:true}]];$.grid=new dojox.grid.DataGrid({store:$.store,structure:glayout,style:'height:420px;width:100%;font-size:90%;',rowSelector:"18px",rowsPerPage:20},contactsdiv);$.grid.startup();dojo.connect($.grid,"onRowDblClick",$.rowEdit);var _filterchange=function(e){var ln=$._filterLName.attr('value')+'*';var org=$._filterOrg.attr('value')+'*';$.grid.filter({lastname:ln,association:org},true)};$._filterLName=new dijit.form.TextBox({onChange:_filterchange},'filter-lastname');$._filterLName.startup();$._filterOrg=new dijit.form.TextBox({onChange:_filterchange},'filter-organization');$._filterOrg.startup();var _contactssave=function(e){$.doSave();return true};var _contactsrevert=function(e){$.doRevert();return true};var _contactsadd=function(e){$.showAddDialog();return true};var _contactsdel=function(e){$.grid.removeSelectedRows();return true};$._btnsave=new dijit.form.Button({onClick:_contactssave},'contacts-save');$._btncancel=new dijit.form.Button({onClick:_contactsrevert},'contacts-cancel');$._btnadd=new dijit.form.Button({onClick:_contactsadd},'contacts-add');$._btndel=new dijit.form.Button({onClick:_contactsdel},'contacts-delete');dojo.connect($.store,"onNew",$.buttonsEnable);dojo.connect($.store,"onSet",$.buttonsEnable);dojo.connect($.store,"onDelete",$.buttonsEnable);dojo.connect($.store,"save",$.buttonsDisable);dojo.connect($.store,"revert",$.buttonsDisable);dojo.query(".documentActions").style({display:'none'});dojo.query("#nmhacontacts-right").style({'float':'right'});dojo.query("#nmhacontacts-left").style({'float':'left'});$._dialogTitles={add:'Add Contact',update:'Edit Contact'};$.theDialog=new dijit.Dialog({title:$._dialogTitles.add,href:"++resource++nmha.roster.js/contact.html"});$.theDialog.startup();dojo.style($.theDialog.domNode,{overflow:'hidden'});$.buttonsDisable()}})();dojo.addOnLoad(function(){dojo.query('#roster-grid').forEach(function(item){nmha.do_roster({roster:item})});dojo.query('#contacts-grid').forEach(function(item){nmha.do_contacts({contacts:item})})});
